Я пытаюсь выяснить простой способ запуска тестов в приложении angularjs. Я новичок в мире тестирования, поэтому немного сложно понять все варианты и разницу между ними.
Моя цель: иметь возможность запускать тесты просто из моей среды IDE - Eclipse. И для проверки кода на браузере Google Chrome.
Я обнаружил, что жасмин является очевидным выбором для написания модульных тестов js. Проблема заключается в выборе бегуна как для тестов жасмина, так и для тестов e2e.
Попытка сохранить это просто, я придумал следующую идею для настройки: Напишите модульные тесты в жасмине и тесты e2e в phantomjs и syn.js. Затем настройте eclipse для запуска phantomjs в качестве внешнего инструмента, так что выход перейдет на консоль в eclipse.
Я также планирую иметь работу CI в Jenkins, и, насколько мне известно, Jenkins также может запускать phantom, поэтому теоретически это решение будет работать одинаково для CI.
В качестве альтернативы существуют тестовые инструменты, такие как Karma и Protractor. С одной стороны, им, по-видимому, рекомендуется, но, с другой стороны, они кажутся мне в некоторых случаях излишними. Для работы требуется много разных инструментов/сервисов/процессов, и кажется, что боль поддерживает все эти настройки, если они ломаются.
В моем понимании: protractor работает на webdriverjs, который работает на nodejs, и он требует, чтобы сервер селена работал в фоновом режиме, и, кроме всего прочего, селен открывает реальные окна браузера, которые кажутся немного бессмысленными, а не безголовыми проверка браузера.
Тогда есть Карма, что я еще не полностью понял, что она должна делать. Из того, что я прочитал, он контролирует файлы в моем проекте и всякий раз, когда файл изменяется, он запускает тесты. Я не уверен, как он проходит тесты - это также использование селена?
И, наконец, есть хрюканье и йомен, которые я совсем не понимаю, что они делают и как они взаимодействуют или согласуются с другими инструментами, которые я перечислял.
Я был бы признателен, если бы кто-нибудь мог прояснить, что делают эти различные инструменты, и как они сочетаются друг с другом. Кроме того, как они будут соответствовать Jenkins в качестве сервера CI?
Также, если вы могли бы прокомментировать мою "более простую настройку" - это имеет смысл? Я что-то пропустил?