2014-09-25 4 views
199

kilka pytań:Karma vs ramach testów jaśmin, Mocha, QUnit

  • Jak Karma i ramy testowania X (jaśmin, Mocha, QUnit) odnoszą się do siebie?
  • Jakie są równoważne ramy w świecie Java? Zakładam, że Jasmine, Mocha, QUnit są równe jUnit/TestNG. A co z karmą?
  • Czy mogę uruchomić framework testujący X (np. Jasmine) bez karmy?
  • Czy karma to test jednostkowy lub test integracji/e2e? Ten pokaz reference jest przeznaczony do testu jednostkowego, jednak podany jest test e2e dla testu this.
+0

Prowadzimy mocha bez karmy, ale [wielu programistów używa kilku schematy testowe] (http://stackshare.io/stackups/karma-runner-vs-mocha-vs-jasmine) –

Odpowiedz

333

Karma jest biegaczem testowym przeglądarki.

Chodzi o to, że przeglądarki nie mają natywnie pojęcia ładowania plików testów, uruchamiania ich i raportowania wyników. Co karma jest (w przybliżeniu):

  • począwszy mały serwer WWW, aby służyć „po stronie klienta” javascript pliki mają być testowane (1)
  • służyć również „po stronie klienta” javascript Pliki z testy (lub specyfikacje, ponieważ są one często nazywane) (2)
  • służyć niestandardową stronę internetową, która będzie uruchamiana kodu javaScript do testów (3)
  • uruchomić przeglądarkę, aby załadować stronę (4)
  • zgłoś wyniki testu do serwera (5)
  • karma może ponownie zgłosić wyniki w postaci plików tekstowych, konsola, cokolwiek serwer CI lubi, etc ...

Patrząc na każdej części:

(1) Pliki te będą rzeczywiste js akta ; powiesz karmy, jak je załadować. Jeśli używasz requirejs, istnieje wtyczka do karmy i potrzebna jest pewna konfiguracja.

(2) Testy te można zapisać w różnych ramach testowania JavaScript (Jasmine, QUnit, Mocha)  ; jest to kod JS uruchamiany w przeglądarce.

(3) Niestandardowa strona internetowa będzie nieco inna dla każdej architektury testowej:  ; to dlatego karma ma wtyczki dla różnych frameworków.

(4) Karma może uruchomić stronę w wielu przeglądarkach (FF, Chrome, lub bezgłowe przeglądarkach takich jak PhantomJs.)

(5) Raportowanie do karmy jest znowu ramy zależne i rozpatrywane wtyczek karmy .

Tak, aby odpowiedzieć na Twoje pytania:

  • w Javie, większość ludzi używa JUnit, który jest zarówno ramy do pisania testów i uruchomić je, ale nie ma problemu różnicowania środowiska, w którym prowadzone są badania i ten, w którym raporty z testów są agregowane; karma byłaby brakującym elementem pomiędzy JUnit Suite a JUnit TestRunner
  • Tak, możesz zrobić wszystko, co karma robi "ręcznie" - wybierz jedną ramkę (jaśmin, qunit, mocha) i postępuj zgodnie z instrukcjami.Zaletą karmy jest to, że dostarcza ona gotowe rozwiązanie, jeśli jesteś w standardowej konfiguracji.
  • Karma może być stosowany zarówno dla testów jednostkowych (z jaśmin/qunit/cokolwiek) i testów integracyjnych (który będzie użyć innego API, jak webdriver, aby napędzać przeglądarkę)
+38

To zasługuje na wpis na blogu lub coś takiego. – Willa

+0

Karma może uruchomić stronę w wielu przeglądarkach (przeglądarkach FF, Chrome lub bezgłowych, takich jak PhantomJs.)? więc Jasmine ma rację? możemy przetestować go na wielu frameworkach i wybrać tę konfigurację w konf ... –

+1

@ Wang'lPakhrin Możesz oczywiście użyć jaśminu z (m) dowolną przeglądarką. Miałem na myśli to, że z technicznego punktu widzenia, karma może uruchomić (m) dowolne przeglądarki, w których chcesz przetestować. W chwili pisania tego tekstu jaśmin nie był odpowiedzialny za uruchamianie przeglądarek (wciąż nie sądzę, że tak się dzieje). Mając nadzieję, że to wyjaśni! – phtrivier

21

tezy o facecie, który zaprojektował Karma był bardzo dobrze poinformowany w opisywaniu istniejących rozwiązań i porównując je, i oczywiście opisując Karma sam

https://github.com/karma-runner/karma/blob/master/thesis.pdf

Podsumowanie: Karma jest biegaczem testu. Może być używany przez QUnit, Jasmine, Mocha, ... Karma ma zalety dla innych biegaczy testowych, aby poprawić swój cykl rozwoju TDD/BDD. "Ogląda" pliki, więc gdy zapiszesz zmianę, Karma uruchamia testy i raporty natychmiast, bez kontekstu przełączania do przeglądarki internetowej, aby uruchomić test.

W skrócie, być może pytanie powinno być Karmą, Jasmine, Mocha lub QUnit?

+2

Możesz napisać krótkie podsumowanie z linku. To poprawia Twoją odpowiedź. –

+0

Czy karma może być testowana? – SuperUberDuper

+0

można również oglądać w Jasmine? Tak myślę, ale nie zapamiętuję. –

51

Jeden krótsza droga, aby zrozumieć różnicę:

Osoby testujące zwykły Jasmine/Mocha najprawdopodobniej są uruchomione cały kod z maszyną wirtualną węzła.

Dodanie Karmy do miksu (w oparciu o istniejący framework z wyboru) uruchomi pakiet testowy z silnikiem innych przeglądarek.

W ten sposób otrzymasz małe dodatki w środowisku przeglądarki. Łatwiej będzie przetestować kod związany z DOM, ale będziesz również poddawał się dodatkowym zasobom podanym przez silnik Node (jak system plików/dostęp do powłoki).