2012-04-23 27 views
14

Czy możliwe jest wykonanie testów jednostkowych QUnit (javascript) od Jenkins? Mój skrypt budujący to Apache Ant. Czy Jenkins wykona to jako oddzielny krok budowania, czy też będę musiał dodać coś w konfiguracji mojego skryptu budującego mrówkę?Uruchamianie testów QUnit z Jenkinsem i Apache Ant?

+0

Dla QUnit/Jenkins można również użyć rozszerzenia Arquillian-QUnit: http://stackoverflow.com/questions/7756644/jenkins-qunit/18263488#18263488 –

Odpowiedz

18

W końcu udało mi się to rozgryźć.

Oto mój end-to-end realizacja:

  1. Install PhantomJS (http://phantomjs.org/) - Zainstalowałem w moim Build/Tools

  2. zainstalować skrypt PhantomJS QUnit androidów (https://gist.github.com/1588423) - również zainstalowałem to w moim folderze build/tools

  3. Dodano następujący cel do mojego pliku 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. Pod moim projektem Jenkins config, teraz powołać Ant z "minify qunit"

  2. wskazuję Jenkins do pliku wyjściowego XML JUnit stylu

A oto workflow:

  1. Sprawdź zmienia się w moim repo
  2. Jenkins będzie odpytywać GitHub zmian
  3. Jeśli są jakieś zmiany, Jenkins będzie ciągnąć w dół
  4. Ant zostanie wywołany, robi kompilacji, a następnie kolejny mój zespół testuje
  5. Wyniki badań zostaną opublikowane w JUnit-like format XML
  6. Jenkins przeanalizuje ten plik wyjściowy. Jeśli żadne testy nie powiodą się, kompilacja zostanie oznaczona jako "Sukces". Jeżeli jakiekolwiek próby zawiodły, kompilacja zostanie oznaczony jako „niestabilna”
  7. Jenkins będzie wdrożyć zmienia internetowej
  8. Jenkins będzie czyszczeniu-obszar roboczy

PS: W tej chwili, trzeba ręcznie usunąć plik wyjściowy XML typu JUnit. Naprawię to później.

PS: Pobierz dostosowaną kolejkę.js (https://gist.github.com/2488794)

+5

Dlaczego dostosowany QUnit? Nie utknąłeś teraz z tą wersją? –

+0

"--juni ścieżka-gdzie-chcesz-pisać-w-JUnit-style-output/qunit-results.xml" " Powinna to być --jednostka: lol: – kidnan1991

1

Jeśli dobrze rozumiem konfigurację, można uruchomić krok budowania Ant, podając lokalizację docelową build.xml, najwyższego poziomu i -D parametrów (jeśli są dostępne). This może być pomocne.

+1

Czy ta pomoc? –

0

Qunit sama teraz utrzymuje biegacza phantomjs:

https://github.com/jquery/qunit/tree/master/addons/phantomjs

Więc zakładając, że już mam zainstalować phantomjs, pobrać runner.js z powyższego linku (lub pobrać za pomocą altru/jakiegokolwiek menedżera pakietu js), umieścić to gdzieś Jenkins może go znaleźć, a następnie użyć:

phantomjs path/to/runner.js path/to/your/qunit_tests.html 

Daje minimalną moc takiego:

$ phantomjs superlists/static/tests/runner.js accounts/static/tests/tests.html 
Took 29ms to run 11 tests. 11 passed, 0 failed. 

Albo tak, jeśli nie:

$ 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. 

Nie JUnit-xml integracja, ale przynajmniej zwraca kod błędu, jeśli się nie powiedzie, więc nie powiedzie się kompilacja w jenkins ...

$ echo $? 
1 
+0

zaktualizowany link do runner.js https://github.com/jonkemp/qunit-phantomjs-runner – zbug

Powiązane problemy