У меня есть план сборки веб-приложения, работающий на Непрерывной системе Интеграции (Бамбук Atlassian 2.5). Я должен включить находящиеся в QUnit модульные тесты JavaScript в план сборки так, чтобы на каждой сборке, тесты JavaScript были бы запущены, и Бамбук интерпретирует результаты испытаний.
Предпочтительно я хотел бы иметь возможность сделать процесс сборки "автономным" так, чтобы никакие соединения с внешними серверами не требовались. Хорошие идеи о том, как выполнить это? Система CI, выполняющая процесс сборки, находится на сервере Linux Ubuntu.
Как мне удалось придумать решение самого решения, я думал, что это будет хорошая идея поделиться этим. Подход не может быть безупречным, но это первый, который, казалось, работал. Не стесняйтесь публиковать улучшения и предложения.
Что я сделал в двух словах:
, я буду затем проходить через более подробные этапы. Это то, что заканчивалось мою структуру моей каталога:
lib/ JsTestDriver.jar test/ qunit/ equiv.js QUnitAdapter.js jsTestDriver.conf run_js_tests.sh tests.js test-reports/ build.xml
на сервере сборки:
APT-Get-install XVFB
) APT-Get Установите Firefox
) В ваше приложение для построения:
EQUIV.JS
и qunitadapter.js
jstestdriver.conf
): server: http://localhost:4224 load: # Load QUnit adapters (may be omitted if QUnit is not used) - qunit/equiv.js - qunit/QUnitAdapter.js # Tests themselves (you'll want to add more files) - tests.js
Создайте файл сценария для запуска узлов и генерации модулей Результаты испытаний (пример в bash, run_js_tests.sh
):
#!/bin/bash
# directory to write output XML (if this doesn't exist, the results will not be generated!)
OUTPUT_DIR="../test-reports"
mkdir $OUTPUT_DIR
XVFB=`which Xvfb`
if [ "$?" -eq 1 ];
then
echo "Xvfb not found."
exit 1
fi
FIREFOX=`which firefox`
if [ "$?" -eq 1 ];
then
echo "Firefox not found."
exit 1
fi
$XVFB :99 -ac & # launch virtual framebuffer into the background
PID_XVFB="$!" # take the process ID
export DISPLAY=:99 # set display to use that of the xvfb
# run the tests
java -jar ../lib/JsTestDriver.jar --config jsTestDriver.conf --port 4224 --browser $FIREFOX --tests all --testOutput $OUTPUT_DIR
kill $PID_XVFB # shut down xvfb (firefox will shut down cleanly by JsTestDriver)
echo "Done."
Создайте целью, которая вызывает скрипт:
<target name="test">
<exec executable="cmd" osfamily="windows">
<!-- This might contain something different in a Windows environment -->
</exec>
<exec executable="/bin/bash" dir="test" osfamily="unix">
<arg value="run_js_tests.sh" />
</exec>
</target>
Наконец, сообщите плану сборки Bamboo для оба теста
Цель и ищите результаты теста Junit. Вот по умолчанию «** / тестовые отчеты / *. XML»
будет делать нормально.
Вы можете использовать Rhino, безголовый браузер, чтобы запустить тесты устройства на вашем компьютере CI. Конечно, недостаток вот в том, что он не найдет ошибки, специфичные для браузера x ... но он пробивает установку 2-3 oSes на вашу коробку CI, чтобы покрыть все основные платформы ...
, но да, Этот вид отстой ... Но это может работать достаточно хорошо в сценарии CI.
как альтернатива, вы также можете попробовать TestSwarm. Я получил его и бегал, используя qunit, чтобы запустить мои тесты JS.