2011-09-30 4 views
16

Abbiamo un client Web ricco. I nostri controller e le facciate dei servizi sono scritte in coffeescript (JavaScript) e jquery. In passato sarebbero stati java.Come possiamo eseguire i test jasmine JavaScript da Jenkins (Hudson) senza caricare un JSP?

Per eseguire i nostri test jasmine JavaScript da Jenkins/Hudson, utilizziamo junit java e htmlunit per caricare una pagina jsp orientata al test che include le specifiche jasmine.

Quando l'unità Html tenta di eseguire, esplode cercando di getPage() probabilmente a causa di un percorso di classe del parser XML che è estremamente difficile da rintracciare nel nostro mondo.

Vogliamo solo essere in grado di eseguire i nostri test JavaScript da Jenkins e lo hanno rapporto di errore se un test JavaScript non passa. Stiamo solo utilizzando jsp e htmlunit per eseguire i test JavaScript. Possiamo caricare i test di JavaScript e il codice javascript in un motore JavaScript con Jenkins come la cosa che dà il via? Se é cosi, come?

risposta

0

È possibile utilizzare il selenio? In questo caso, in realtà utilizzerebbe un vero browser e si avvicinerà il più possibile all'ambiente reale.

+1

Grazie per la risposta. È una domanda giusta. Sono tornato alla domanda su come convincere Jenkins a dare il via al selenio, a eseguire i test di Jasmine, a vedere i risultati. – finneycanhelp

+0

Questo è esattamente quello che sto cercando ... – naugtur

+0

@ sarel-botha: Dai un'occhiata a: 1. SauceLabs, 2. Sauce OnDemand plugin e Saucery2 o Saucery3 NuGet pacchetti per rendere i tuoi test automatici con Jenkins e SauceLabs facili –

13

Sembra che tu sia in un ambiente Java. Il mio jasmine-maven-plugin potrebbe essere una buona misura.

+1

Grazie tu. Il tuo codice è fantastico e apprezzo il tuo contributo. Sì, sono in un ambiente Java e il tuo codice ha ispirato una soluzione al suo interno. Preferirei saltare l'utilizzo di Java per eseguire Jasmine e avere qualcosa in Jenkins appena dare il via ai test sui gelsomini. Sembra che dovrei fare una richiesta di plugin jenkins. – finneycanhelp

6

Sono già risolto questo problema eseguendo i test con un plugin node.js chiamato jasmine-node

Questa soluzione richiede ovviamente node.js e alcuni moduli nodo per eseguire correttamente le prove di gelsomino. Non esiste un vero browser che esegue i test, ma uno emulato utilizzando un modulo chiamato jsdom, che in pratica crea un browser headless e, più specificamente, un DOM, con cui i test possono interagire.

C'è moduli nodi per jQuery, sottolineano e propably altri troppo, per cui questi possono essere testati anche. Puoi anche saltare l'intera emulazione del browser se preferisci eseguire i test in un browser, anche se lo trovo troppo macchinoso rispetto ai test automatizzati di Jenkins.

gelsomino nodi genera rapporti di prova JUnit, che Jenkins può interpretare bene.

Ho appena realizzato c'è qualche jenkins-jasmine-node plugin che potrebbero facilitare questo processo.

8

Jasmine Reporters sarebbe anche una soluzione. Ad esempio, ha istruzioni per eseguire headlessly tramite PhantomJS e può generare JUnit XML in modo che Jenkins possa comprendere i risultati del test in modo nativo, conteggio del test grafico, durata e fallimento nel tempo.

Inoltre, il wrapper "Xvfb-run" spesso dotati di Xvfb è un grande aiuto qui, in modo da poter fare "phantomjs.runner.sh Xvfb-run ..." in un ambiente davvero senza testa.

1

Grunt è tuo amico

ottenuto questa configurazione ed è veramente bello , in più questo ti dà un posto dove iniziare a fare il tuo costruire server fare altre cose carine come implementazione, test di unità, ecc. sai, altre cose belle

+0

"inizia a fare in modo che il tuo server di build faccia altre cose carine come" ...? Distribuzione –

+0

, test di unità, ecc. Sai, altre cose carine – aqm