Что следует использовать для сквозного тестирования: транспортир или карму? [закрыто]

124

Что следует использовать для сквозного тестирования: транспортир или карму?

Angular-seed использует Protractor / Selenium WebDriver для E2E, но в учебнике angular-phonecat используется карма.

Я читал, что мне следует использовать Karma для модульных тестов и Protractor для E2E, что кажется прекрасным, но я подумал, что попрошу здесь, чтобы узнать мнения других разработчиков.

screenm0nkey
источник
1
Лучше подходит для рекомендаций по программному обеспечению . Хотя, если вы разместите там этот вопрос, вам нужно будет уточнить, каковы ваши требования. Связанная мета
Профессор Оллман
5
Karma и Protractor используются и рекомендуются командой Angular, но, учитывая состояние документации (то есть: ее много, и трудно узнать, что обновлено), трудно понять, что использовать и для какой цели. Это хороший вопрос, и ответ glpretre был именно тем, что я искал.
Мэтт
5
Не думаю, что вопрос был слишком широким (транспортир против кармы). Мы говорим здесь о фреймворках, а не о каком-то программном обеспечении, так что вопрос стоит именно здесь.
CCC
См. Мой ответ здесь для более подробного обсуждения вариантов использования, преимуществ и ограничений Karma и Protractor: stackoverflow.com/a/29619467/1614973
Дмитрий Зайцев,
Насколько я понимаю, Protractor не позволяет тестировать только часть вашего приложения без присутствия остальных (например, имитация): тестовый код даже не работает в том же интерпретаторе JS, что и приложение. Нет мониторинга файловой системы на предмет изменений исходного кода и автоматического повторного запуска затронутых тестов. Карма обеспечивает их. Он отправляет тестовый код + код приложения в <script> в браузер, поэтому они запускаются в одном интерпретаторе, возможно имитирование, но не предназначен для сквозного тестирования с собственными событиями, как если бы действовал реальный пользователь.
robert4

Ответы:

179

Команда AngularJS рекомендует использовать Protractor, так как он заменяет запускающий сценарий angular:

Angular Scenario Runner находится в режиме обслуживания - если вы начинаете новый проект Angular, подумайте об использовании Protractor .

цитируется из документации AngularJs .

Учебник angular-phonecat был разработан давно (в основном в 2011 году) и еще не обновлен для использования некоторых новых функций Angular, таких как Protractor.

РЕДАКТИРОВАТЬ

В Документах по транспортиру - FAQ :

Почему и карма, и транспортир? Когда я использую что?

Karma - отличный инструмент для модульного тестирования, а Protractor предназначен для сквозного или интеграционного тестирования. Это означает, что небольшие тесты логики ваших отдельных контроллеров, директив и служб должны выполняться с использованием Karma. Большие тесты, в которых у вас есть работающий экземпляр всего вашего приложения, следует запускать с помощью Protractor. Protractor предназначен для запуска тестов с точки зрения пользователя - если ваш тест может быть записан как инструкции для человека, взаимодействующего с вашим приложением, это должен быть сквозной тест, написанный с помощью Protractor.

Вот отличный пост в блоге с дополнительной информацией.

glepretre
источник
11
Из часто задаваемых вопросов о Karma - karma-runner.github.io/0.10/intro/faq.html - Могу ли я использовать Karma для проведения сквозного тестирования? Karma в первую очередь была разработана для низкоуровневого (модульного) тестирования. Если это приложение AngularJS, вы можете использовать Karma с плагином karma-ng-сценария, однако мы рекомендуем Protractor для высокоуровневого тестирования.
mrwaim
Если мне нужно модульное тестирование, а также тестирование e2e, мне нужно настроить среду кармы для модульного тестирования и транспортир для тестирования пользовательского интерфейса или тестирования e2e?
Сунил Гарг,
2
@SunilGarg Да, вы должны, может быть, наша стартовая структура приложения может вам помочь: github.com/glepretre/angular-requirejs-ready (игнорируйте особенности requireJS, если вы его не используете)
glepretre