Запускать тесты QUnit с Jenkins и Apache Ant?
Можно ли выполнить мои модульные тесты QUnit (javascript) от Jenkins? Мой скрипт сборки - Apache Ant. Будет ли Дженкинс выполнять это как отдельный шаг сборки, или мне нужно будет что-то добавить в конфигурацию моего скрипта сборки Ant?
4 ответа
Итак, мне наконец-то удалось это выяснить.
Вот моя сквозная реализация:
Установите PhantomJS ( http://phantomjs.org/) - я установил это в своей папке build / tools
Установите скрипт PhantomJS QUnit Runner ( https://gist.github.com/1588423) - также установил его в мою папку build / tools
Добавил следующую цель в мой файл build.xml:
<target name="qunit" description="runs QUnit tests using PhantomJS">
<!-- QUnit Javascript Unit Tests -->
<echo message="Executing QUnit Javascript Unit Tests..."/>
<apply executable="path-to-your-phantomjs-bin-folder/phantomjs" >
<arg value="-path-to-your-build-tools/qunit-runner.js" />
<arg line="--qunit path-to-your-qunit-folder/qunit.js --tests path-to-your-test-folder --juni path-where-you-want-to-write-the-JUnit-style-output/qunit-results.xml" />
<fileset dir="${basedir}/${dir.test}" includes="tests.js" />
<srcfile/>
</apply>
</target>
В моем конфиге проекта Jenkins я теперь вызываю Ant с помощью команды "minify qunit"
Я указываю Дженкинсу на выходной XML-файл в стиле JUnit
И вот рабочий процесс:
- Проверьте изменения в моем репо
- Дженкинс будет опрашивать GitHub на предмет изменений
- Если есть какие-либо изменения, Дженкинс снесет
- Будет вызван Ant, который выполняет сборку, а затем запускает мои юнит-тесты.
- Результаты теста будут опубликованы в формате XML, похожем на JUnit.
- Дженкинс проанализирует этот выходной файл. Если ни один из тестов не пройден, сборка будет помечена как "Успешно". Если какие-либо тесты не пройдены, сборка будет помечена как "Нестабильная".
- Дженкинс развернет веб-изменения
- Дженкинс уберет рабочую зону
PS: В данный момент вы должны вручную удалить файл вывода типа JUnit. Я исправлю это позже.
PS: Загрузите настроенный файл qunit.js ( https://gist.github.com/2488794).
Я написал задание Ant специально для этого
Если я правильно понимаю ваши настройки, вы можете запустить шаг сборки Ant, указав в нем местоположение вашего build.xml
цель высшего уровня и -D
параметры (если есть). Это может помочь.
Сам Qunit теперь поддерживает бегуна фантома:
https://github.com/jquery/qunit/tree/master/addons/phantomjs
Итак, если вы уже установили phantomjs, возьмите runner.js по ссылке выше (или получите его с помощью bower/ любого другого js-менеджера пакетов), поместите его где-нибудь, где jenkins сможет его найти, и затем используйте:
phantomjs path/to/runner.js path/to/your/qunit_tests.html
Это дает минимальный вывод, как это:
$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html
Took 29ms to run 11 tests. 11 passed, 0 failed.
Или вот так, если не получится:
$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html
Test failed: sinon tests of navigator.id.watch: watch sees current user
Failed assertion: check user, expected: current user, but was: baz
at file:///home/harry/superlists/superlists/static/tests/qunit.js:556
at file:///home/harry/superlists/accounts/static/tests/tests.html:69
at file:///home/harry/superlists/superlists/static/tests/qunit.js:203
at file:///home/harry/superlists/superlists/static/tests/qunit.js:361
at process (file:///home/superlists/superlists/static/tests/qunit.js:1453)
at file:///home/harry/superlists/superlists/static/tests/qunit.js:479
Took 29ms to run 11 tests. 10 passed, 1 failed.
Нет интеграции с junit-xml, но, по крайней мере, он возвращает код ошибки в случае сбоя, поэтому он не сможет выполнить сборку в jenkins...
$ echo $?
1