Возможно ли выполнить мои тесты QUnit (javascript) от Jenkins? Моя сборка script - это Apache Ant. Будет ли Jenkins выполнять это как отдельный шаг сборки, или мне нужно будет добавить что-то в конфигурацию моей Ant сборки script?
Выполнение тестов QUnit с Jenkins и Apache Ant?
Ответ 1
Итак, мне, наконец, удалось это понять.
Здесь моя сквозная реализация:
-
Установите PhantomJS (http://phantomjs.org/) - я установил это в своей папке build/tools
-
Установите PhantomJS QUnit Runner script (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"
-
Я указываю Jenkins на выходной XML файл в стиле JUnit
И вот рабочий процесс:
- Проверить изменения в моем репо
- Дженкинс проведет опрос GitHub для изменений
- Если произойдут какие-либо изменения, Дженкинс потянет вниз
- Ant будет вызван, выполнит сборку, а затем запустит мои модульные тесты
- Результаты теста будут опубликованы в формате JUnit-like XML
- Дженкинс проанализирует этот выходной файл. Если тесты не удались, сборка будет отмечена как "Успех". Если какие-либо тесты не удались, сборка будет отмечена как "Нестабильная"
- Jenkins развернет веб-изменения.
- Дженкинс очистит рабочую область.
PS: На данный момент вам нужно вручную удалить выходной файл XML-типа JUnit. Я исправлю это позже.
PS: Загрузите настроенный qunit.js(https://gist.github.com/2488794)
Ответ 2
Я написал задачу Ant специально для этого
Ответ 3
Если я правильно понял вашу настройку, вы можете запустить шаг Ant build, предоставив ей расположение ваших параметров build.xml
, верхнего уровня и -D
(если они есть). Это может оказать некоторую помощь.
Ответ 4
Теперь Qunit поддерживает бегун-фантомы:
https://github.com/jquery/qunit/tree/master/addons/phantomjs
Итак, предположим, что вы уже установили phantomjs, возьмите runner.js из вышеприведенной ссылки (или получите ее с помощью bower/whatever js package manager), поместите ее где-нибудь в 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