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