Jenkins + qUnit - PullRequest
       28

Jenkins + qUnit

5 голосов
/ 13 октября 2011

Как легко интегрировать Jenkins с qUnit? Я собираюсь использовать настоящий браузер (например, Firefox и Chrome) для запуска тестов. Мой сервер работает на RedHat 6.1 Linux. Я думаю, что у меня есть все необходимые плагины / библиотеки, но я все еще не знаю, как заставить это работать. Я работаю с Дженкинсом в первый раз (на стороне сервера).

// Изменить:

Было бы замечательно, если бы кто-то тоже поделился идеей о том, как создать отчет о покрытии.

Заранее спасибо:).

Ответы [ 5 ]

7 голосов
/ 13 июля 2012

Сказать, что Дженкинс и QUnit - это только часть головоломки. Вам все еще нужен веб-браузер и способ получить XML-файл в стиле JUnit из результатов QUnit на диск. В то время как есть Selenium и Webdriver для управления многочисленными браузерами, самый простой способ начать это - использовать PhantomJS (http://phantomjs.org/). PhantomJS - это браузер без использования веб-приложений, предназначенный только для таких задач.

Если вы просмотрите разделы «Test Frameworks» на этой странице (http://code.google.com/p/phantomjs/wiki/WhoUsesPhantomJS), вы увидите несколько сценариев для запуска QUnit (некоторые с поддержкой JSCoverage). Сценарий phantomjs-jscoverage-qunit выглядит так, как будто он поразит все основные точки, которые вы хотите поразить, как и United. Оба выглядят так, как будто им понадобится немного повозиться, чтобы заставить их работать.

Увы, я не обнаружил никакого метода для запуска тестов QUnit и получения вывода JUnit для Selenium, WebDriver или PhantomJS, который будет работать без изменений.

РЕДАКТИРОВАТЬ: Теперь, спустя несколько месяцев, мне стало ясно, что веб-драйвер - это будущее Selenium (мне, наверное, тогда было ясно, но это не так). Кроме того, PhantomJS теперь работает с WebDriver через GhostDriver, поэтому поддержка только WebDriver и выбор PhantomJS в качестве цели, вероятно, лучший совет на будущее.

1 голос
/ 16 августа 2013

Раскрытие информации: я участник проекта Arquillian.

Вы можете использовать расширение с открытым исходным кодом Arquillian Qunit для выполнения ваших тестов QUnit на Jenkins. В целом, Arquillian Qunit Extension можно легко использовать в средах непрерывной интеграции. На этом GitHub repo вы можете найти реальный пример того, как Arquillian Qunit Extension можно использовать для выполнения тестов QUnit на Travis CI безголовых машинах.

Arquillian - это проект сообщества JBoss.

Расширение Arquillian Qunit - это расширение Arquillian , которое автоматизирует тестирование JavaScript Qunit. Расширение Arquillian Qunit прозрачно интегрируется с инфраструктурой тестирования JUnit.

Вы можете найти больше информации об этом файле README . Кроме того, есть витрина , которая может быть выполнена через Maven и показывает, как настроить тестовый набор.

Используя это расширение, вы можете развернуть архив во время выполнения теста QUnit и / или выполнить один или несколько наборов тестов QUnit за одно выполнение. Кроме того, вы можете определить порядок выполнения QUnit Test Suite, используя аннотацию @InSequence.

Например, предположим, что вы хотите выполнить два набора тестов QUnit (qunit-tests-ajax.html и qunit-tests-dom.html) и что ваши тесты QUnit, включенные в эти наборы тестов, выполняют запросы Ajax к веб-службе , Очевидно, вам нужно, чтобы эта веб-служба находилась на хосте во время выполнения тестов. Arquillian может автоматически выполнить развертывание веб-службы в контейнере. В таком случае ваш тестовый пример Arquillian будет выглядеть так:

 @RunWith(QUnitRunner.class)
 @QUnitResources("src/test/resources/assets")
 public class QUnitRunnerTestCase {

     private static final String DEPLOYMENT = "src/test/resources/archives/ticket-monster.war";

     /**
      * Creates the Archive which will be finally deployed on the AS.
      *
      * @return Archive<?>
      */
     @Deployment()
     public static Archive<?> createDeployment() {
         return ShrinkWrap.createFromZipFile(WebArchive.class, new File(DEPLOYMENT));
     }

     /**
      * Execute the qunit-tests-ajax.html QUnit Test Suite.
      */
     @QUnitTest("tests/ticketmonster/qunit-tests-ajax.html")
     @InSequence(1)
     public void qunitAjaxTests() {
         // empty body - only the annotations are used
     }

     /**
      * Execute the qunit-random-tests.html QUnit Test Suite.
      */
     @QUnitTest("tests/ticketmonster/qunit-random-tests.html")
     @InSequence(2)
     public void qunitRandomTests() {
         // empty body - only the annotations are used
     }
}
1 голос
/ 19 июля 2013

Прошло уже больше года с тех пор, как этот вопрос был опубликован, но есть плагин Jenkins для TestSwarm . Насколько я понимаю, вы можете использовать TestSwarm для непрерывного выполнения тестов QUnit во всех основных браузерах. Он открыт на GitHub .

0 голосов
/ 22 августа 2013

BlanketJS - это фантастический инструмент для покрытия кода, который хорошо работает с QUnit. Я использую его около года.

Для интеграции с Jenkins я использую grunt, который завершается с 0, если задача grunt завершается неудачей, и с 1, если она проходит, поэтому он отлично интегрируется с Jenkins.

Не было никакого существующего плагина Grunt, который бы обрабатывал Blanket и QUnit вместе, поэтому я написал свой собственный плагин Grunt. Плагин поддерживает «принудительное выполнение» минимального порога, иначе задача Grunt не будет выполнена.

Я написал сообщение в блоге со всеми подробностями здесь: http://www.geekdave.com/2013/07/20/code-coverage-enforcement-for-qunit-using-grunt-and-blanket/

0 голосов
/ 12 июля 2013

При использовании реальных браузеров: Запускайте тесты QUnit одновременно в нескольких браузерах с помощью bunyip (https://github.com/ryanseddon/bunyip).. Он построен на базе Yeti, который может предоставлять отчеты, совместимые с JUnit XML - таким образом, читаемый Jenkins

Если вы используете PhantomJS (безголовый браузер, который работает почти как настоящий браузер на основе WebKit): Просто поделился здесь https://stackoverflow.com/a/17553889/998008 пошаговым описанием добавления задачи выполнения теста QUnit в скрипт сборки Apache Ant. Дженкинс запускает скрипт при извлечении рабочей копии проекта из VCS. Вам нужно указать в проекте Jenkins расположение выходного файла. Вывод совместим с JUnit XML.

...