Выполнение тестов QUnit с Jenkins и Apache Ant?

Возможно ли выполнить мои тесты QUnit (javascript) от Jenkins? Моя сборка script - это Apache Ant. Будет ли Jenkins выполнять это как отдельный шаг сборки, или мне нужно будет добавить что-то в конфигурацию моей Ant сборки script?

Ответы

Ответ 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>
  1. В моей конфигурации проекта Jenkins я теперь вызываю Ant с помощью "minify qunit"

  2. Я указываю Jenkins на выходной XML файл в стиле JUnit

И вот рабочий процесс:

  • Проверить изменения в моем репо
  • Дженкинс проведет опрос GitHub для изменений
  • Если произойдут какие-либо изменения, Дженкинс потянет вниз
  • Ant будет вызван, выполнит сборку, а затем запустит мои модульные тесты
  • Результаты теста будут опубликованы в формате JUnit-like XML
  • Дженкинс проанализирует этот выходной файл. Если тесты не удались, сборка будет отмечена как "Успех". Если какие-либо тесты не удались, сборка будет отмечена как "Нестабильная"
  • Jenkins развернет веб-изменения.
  • Дженкинс очистит рабочую область.

PS: На данный момент вам нужно вручную удалить выходной файл XML-типа JUnit. Я исправлю это позже.

PS: Загрузите настроенный qunit.js(https://gist.github.com/2488794)

Ответ 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