Czy powinienem używać Protractora czy Karmy do moich kompleksowych testów? [Zamknięte]

124

Czy powinienem używać Protractora czy Karmy do moich kompleksowych testów?

Angular-seed używa Protractor / Selenium WebDriver dla E2E, ale samouczek dotyczący angular-phonecat używa karmy.

Czytałem, że powinienem używać Karmy do testów jednostkowych i Protractora do E2E, co wydaje się w porządku, ale pomyślałem, że poproszę tutaj o opinie innych programistów.

screenm0nkey
źródło
1
Lepsze dopasowanie do zaleceń dotyczących oprogramowania . Jeśli jednak opublikujesz tam to pytanie, będziesz musiał wyjaśnić, jakie są Twoje wymagania. Powiązana meta
Profesor Allman,
5
Karma i Protractor są używane i zalecane przez zespół Angular, ale biorąc pod uwagę stan dokumentacji (tj. Jest jej mnóstwo i trudno jest wiedzieć, co jest aktualne), trudno jest wiedzieć, której użyć i w jakim celu. To dobre pytanie, a odpowiedź glpretre była dokładnie tym, czego szukałem.
Matt,
5
Nie sądzę, żeby pytanie było zbyt szerokie (Kątomierz kontra Karma). Mówimy tutaj o frameworkach, a nie tylko o oprogramowaniu, więc pytanie jest na właściwym miejscu.
CCC,
Zobacz moją odpowiedź tutaj, aby uzyskać bardziej szczegółowe omówienie przypadków użycia, zalet i ograniczeń karmy i kątomierza: stackoverflow.com/a/29619467/1614973
Dmitri Zaitsev
Rozumiem, że Protractor nie pozwala na testowanie tylko części twojej aplikacji bez obecności reszty (np. Mockowanie): kod testowy nie jest nawet uruchamiany w tym samym interpretatorze JS co aplikacja. Brak monitorowania systemu plików pod kątem modyfikacji kodu źródłowego i automatycznego ponownego uruchamiania testów, których dotyczy problem. Karma to zapewnia. Wysyła kod testowy + kod aplikacji w <script> s do przeglądarki, dzięki czemu działają one w tym samym interpreterze, co jest możliwe, ale nie jest przeznaczone do testowania od końca do końca ze zdarzeniami natywnymi, tak jakby działał prawdziwy użytkownik.
robert4

Odpowiedzi:

179

Zespół AngularJS zaleca używanie Protractor, ponieważ zastąpi on biegacz scenariuszy kątowych:

Angular Scenario Runner jest w trybie konserwacji - jeśli zaczynasz nowy projekt Angular, rozważ użycie Protractor .

cytowane z dokumentacji AngularJs .

Samouczek angular-phonecat został opracowany dawno temu (głównie w 2011 roku) i nie został jeszcze zaktualizowany, aby korzystać z niektórych nowych funkcji Angulara, takich jak Protractor.

EDYTOWAĆ

W dokumentach Protractor - FAQ :

Dlaczego zarówno Karma, jak i Kątomierz? Kiedy używam których?

Karma to świetne narzędzie do testowania jednostkowego, a Protractor jest przeznaczony do testów kompleksowych lub integracyjnych. Oznacza to, że małe testy logiki poszczególnych kontrolerów, dyrektyw i usług powinny być uruchamiane przy użyciu Karmy. Duże testy, w których masz uruchomioną instancję całej aplikacji, powinny być uruchamiane przy użyciu Protractor. Protractor jest przeznaczony do uruchamiania testów z punktu widzenia użytkownika - jeśli test można zapisać jako instrukcję dla człowieka wchodzącego w interakcję z aplikacją, powinien to być test napisany w programie Protractor.

Oto świetny post na blogu z dodatkowymi informacjami.

glepretre
źródło
11
Z FAQ Karmy - karma-runner.github.io/0.10/intro/faq.html - Czy mogę używać Karmy do testowania od końca do końca? Karma została zaprojektowana głównie do testowania niskiego poziomu (jednostkowego). Jeśli jest to aplikacja AngularJS, możesz używać Karmy z wtyczką karma-ng-scenario, jednak zalecamy Protractor do testowania wysokiego poziomu.
mrwaim
Jeśli chcę testy jednostkowe, a także testy e2e, muszę skonfigurować środowisko Karma do testów jednostkowych i kątomierza do testów UI lub e2e?
Sunil Garg
2
@SunilGarg Tak, musisz, być może nasza struktura aplikacji startowej może Ci pomóc: github.com/glepretre/angular-requirejs-ready (zignoruj ​​specyfikacje requireJS, jeśli go nie używasz)
glepretre