Опираясь на ответ Kyle , мне удалось найти надежное решение этой проблемы.Спасибо, Кайл!
Решение состоит в том, чтобы использовать плагин phantomjs-maven-plugin Maven.Я добавляю плагин в свой pom.xml следующим образом (вам нужно обновить Maven до версии 3.1 или выше, чтобы использовать плагин):
<plugin>
<groupId>com.github.klieber</groupId>
<artifactId>phantomjs-maven-plugin</artifactId>
<version>0.4</version>
<executions>
<execution>
<goals>
<goal>install</goal>
<goal>exec</goal>
</goals>
</execution>
</executions>
<configuration>
<version>1.9.7</version>
<checkSystemPath>false</checkSystemPath>
<script>src/test/qunit/run-qunit-testsuite.js</script>
<arguments>
<argument>src/test/qunit/testsuite.qunit.html</argument>
</arguments>
</configuration>
</plugin>
Важное предупреждение: вПриведенный выше код pom.xml, убедитесь, что вы используете относительные (не абсолютные) ссылки на файлы, как я сделал.Я потратил несколько часов после использования абсолютных ссылок (начиная с ${basedir}
) только для того, чтобы выяснить, что он делает что-то странное с рабочим каталогом PhantomJS.Использование относительных ссылок в вашем pom.xml включит относительные ссылки внутри вашего HTML-файла (что увеличит переносимость кода).
В приведенном выше коде плагина я ссылаюсь на два файла: run-qunit-testsuite.js
и testsuite.qunit.html
.HTML-файл - это просто файл QUnit, который выполняет все ваши тесты.Файл JS является драйвером для PhantomJS;он принимает один аргумент: тестовый файл HTML QUnit для загрузки.
Чтобы завершить это решение, вы можете загрузить пример драйвера и тестовые файлы со страницы GMarik GitHub Gist *1020*.Вы можете и должны адаптировать эти файлы к вашим потребностям (хотя учтите, что страница GMarik не включает лицензию с открытым исходным кодом, вам нужно будет запросить разрешение на любое использование, нарушающее авторские права).
При добавлении этого плагинав вашем коде Maven, после выполнения сборки Maven вы увидите вывод, подобный следующему (адаптировано со страницы GMarik):
[INFO] --- phantomjs-maven-plugin:0.4:exec (default) @ project.name ---
[INFO] Executing phantomjs command
'waitFor()' finished in 200ms.
Tests completed in 21 milliseconds.
5 tests of 5 passed, 0 failed.
Если тесты пройдут, то ваша сборка пройдет.Если тесты не пройдены, ваша сборка не удастся!