2012-04-23 12 views
14

È possibile eseguire i miei test di unità QUnit (javascript) da Jenkins? Il mio script di build è Apache Ant. Jenkins lo eseguirà come Step di costruzione separato o dovrei aggiungere qualcosa nella configurazione del mio script di build Ant?Esecuzione di test QUnit con Jenkins e Apache Ant?

+0

Per QUnit/Jenkins è possibile utilizzare anche l'estensione Arquillian-QUnit: http://stackoverflow.com/questions/7756644/jenkins-qunit/18263488#18263488 –

risposta

18

Quindi, finalmente sono riuscito a capirlo.

Ecco la mia end-to-end di attuazione:

  1. Installare PhantomJS (http://phantomjs.org/) - Ho installato nel mio build/strumenti cartella

  2. Installare lo script PhantomJS QUnit Runner (https://gist.github.com/1588423) - installato anche questo nel mio build/cartella strumenti

  3. aggiunto il seguente obiettivo al mio file 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. Sotto il mio progetto config Jenkins, ora invocare Formica con "qunit Minify"

  2. indico Jenkins per il file di output XML JUnit stile

E, qui è il flusso di lavoro:

  1. Controlla i cambiamenti nel mio repo
  2. Jenkins interrogherà GitHub per le modifiche
  3. Se ci sono eventuali modifiche, Jenkins tirerà giù
  4. Ant verrà invocato, facendo la costruzione, poi correre la mia unità test
  5. I risultati dei test saranno pubblicati in un Formato XML simile a JUnit
  6. Jenkins analizzerà questo file di output. Se nessun test è fallito, la build sarà contrassegnata come "Success". Se qualsiasi test fallito, la build sarà contrassegnato come "instabile"
  7. Jenkins implementerà il web cambia
  8. Jenkins sarà pulitura dell'opera-zona

PS: Al momento, è necessario eliminare manualmente il file di output XML di tipo JUnit. Lo aggiusterò più tardi.

PS: Scarica l'unità q personalizzata.js (https://gist.github.com/2488794)

+5

Perché il QUnit personalizzato? Non sei ora bloccato con quella versione? –

+0

"--juni path-where-you-want-to-write-the-JUnit-style-output/qunit-results.xml" " Dovrebbe essere --junit: lol: – kidnan1991

1

Se ho compreso correttamente la configurazione, è possibile eseguire la fase Ant build fornendola con la posizione del target build.xml, di primo livello e dei parametri -D (se presenti). This potrebbe essere di aiuto.

+1

Questo aiuto? –

0

Qunit stessa ora mantiene un corridore phantomjs:

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

Quindi supponendo che hai già installato phantomjs, prendi runner.js dal link sopra (o prendilo usando bower/qualunque gestore di pacchetti js), metti da qualche parte Jenkins può trovare, e quindi utilizzare:

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

Dà uscita minima in questo modo:

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

O come questo se fallisce:

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

No JUnit-xml integrazione, ma almeno restituisce un codice di errore se fallisce, quindi fallirà la build in jenkins ...

$ echo $? 
1 
+0

link aggiornato a runner.js https://github.com/jonkemp/qunit-phantomjs-runner – zbug

Problemi correlati