Я изучал лучший способ проведения JS-тестирования в нашей среде CIF Maven. То, что я в настоящее время уже починил следующие в моем Maven проекте:Лучший способ интеграции maven/qunit/phantomjs?
- QUnit ресурсах (JS/файлы CSS)
- тест QUnit HTML-файлы (по одному для каждого файла испытуемого) с HTML арматурой при необходимости
- индекс HTML-файл, который ссылается на тест HTML файлы, как упорядоченный список гиперссылок
- PhantomJS бегун файла, который:
- открывает файл индекса HTML и разбирает из списка тестовых файлов
- открывает каждый тестовый файл
- принимает скриншот результатов испытаний QUnit для каждого файла
- Если есть какой-либо сбои, выход со статусом «1»
- Если нет никаких сбоев, выхода со статусом «0»
- файл оболочки, который будет выходить с «0», если phantomjs не установлен, будет вызывать тесты phantomjs, если он установлен
изменения pom.xml для запуска phantomjs испытаний во время фазы тестирования изготовителя:
<plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.1</version> <executions> <execution> <id>PhantomJS Unit Testing</id> <phase>test</phase> <goals> <goal>exec</goal> </goals> </execution> </executions> <configuration> <executable>${project.basedir}/src/main/webapp/unittest/phantomcheck</executable> <arguments> <argument>${project.basedir}/src/main/webapp/unittest/qunit-runner.js</argument> <argument>${project.basedir}/src/main/webapp/unittest/tests/index.html</argument> <argument>${project.build.directory}/surefire-reports</argument> </arguments> </configuration> </plugin> </plugins>
Итак, это работает красиво. Он запускает тесты qunit во время сборки на наших dev и build машинах (пока установлен PhantomJS). Тесты выполняются в безгласной среде браузера без ограничений на тесты qunit. Другая интеграция maven/qunit, которую я видел, ослабевает из-за запуска тестов в Rhino или других средах JS, которые ограничивают тип тестов, которые мы можем написать. Плюс phantomjs дает нам возможность иметь скриншоты тестовых прогонов, которые полезны при устранении любых сбоев.
Недостатком моего подхода является то, что на машине build/dev требуется установка PhantomJS. Я не знаю, как связать phantomJS с зависимостью, чтобы разработчикам не нужно было беспокоиться об установке PhantomJS. Может ли кто-нибудь дать мне толчок в этом направлении? Как мне начать?
Проверьте мой Maven плагин (phantomjs -qunit-бегун). http://code.google.com/p/phantomjs-qunit-runner/ Подробности об использовании здесь: http://kennychua.net/blog/running-qunit-tests-in-a-maven-continuous-integration- build-with-phantomjs –
@KennyChua: вопросник просит инструмент для загрузки PhantomJS в качестве зависимости, и ваш плагин этого не делает. :-( –
Возможно, эта статья может помочь вам http://www.yegor256.com/2014/06/21/casperjs-with-maven.html – yegor256