Запуск тестов QUnit с помощью Jenkins и Apache Ant?

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


person Agile Ace    schedule 23.04.2012    source источник
comment
Для QUnit/Jenkins вы также можете использовать расширение Arquillian-QUnit: /questions/7756644/jenkins-qunit/   -  person Apostolos Emmanouilidis    schedule 16.08.2013


Ответы (4)


Итак, мне наконец-то удалось это выяснить.

Вот моя сквозная реализация:

  1. Установите PhantomJS (http://phantomjs.org/) — я установил это в папку сборки/инструментов.

  2. Установите скрипт PhantomJS QUnit Runner (https://gist.github.com/1588423) — также установил этот в моей папке сборки/инструментов

  3. В мой файл 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. Я указываю Дженкинсу на выходной XML-файл в стиле JUnit.

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

  1. Проверить изменения в моем репо
  2. Дженкинс будет опрашивать GitHub на наличие изменений
  3. Если будут какие-то изменения, Дженкинс потянет вниз
  4. Ant будет вызываться, выполнять сборку, а затем запускать мои модульные тесты.
  5. Результаты теста будут опубликованы в JUnit-подобном формате XML.
  6. Дженкинс проанализирует этот выходной файл. Если ни один из тестов не прошел успешно, сборка будет отмечена как «Успех». Если какие-либо тесты не пройдены, сборка будет помечена как «Нестабильная».
  7. Дженкинс развернет веб-изменения
  8. Дженкинс уберет рабочее место

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

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

person Agile Ace    schedule 03.05.2012
comment
Почему настраиваемый QUnit? Разве вы не застряли на этой версии? - person Adam Lynch; 09.07.2012
comment
--juni path-where-you-want-write-the-JUnit-style-output/qunit-results.xml Должно быть --junit :lol: - person kidnan1991; 16.01.2015

Я написал задачу Ant специально для этого

https://github.com/philmander/ant-jstestrunner

person Phil Mander    schedule 22.11.2012
comment
Спасибо за это задание, Фил. Это как раз то, что мне нужно в данный момент. - person carbontax; 01.08.2013

Если я правильно понимаю ваши настройки, вы можете запустить этап сборки Ant, указав в нем расположение параметров build.xml, цели верхнего уровня и -D (если есть). Это может помочь.

person malenkiy_scot    schedule 23.04.2012

Сам Qunit теперь поддерживает бегун phantomjs:

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
person hwjp    schedule 06.11.2013