2014-09-25 2 views
199

alcune domande:Karma vs framework di test Jasmine, Mocha, QUnit

  • Come Karma e framework di testing X (Jasmine, Mocha, QUnit) si riferiscono a vicenda?
  • Qual è il framework equivalente nel mondo Java? Presumo Jasmine, Mocha, QUnit uguale a jUnit/TestNG. Che ne dici del Karma?
  • Posso eseguire il framework di test X (ad esempio Jasmine) senza Karma?
  • Karma per test di unità o test di integrazione/e2e? Questo spettacolo reference è per il test dell'unità, tuttavia this è indicato per il test e2e.
+0

Eseguiamo mocha senza Karma, ma [molti sviluppatori usano diversi testing frameworks] (http://stackshare.io/stackups/karma-runner-vs-mocha-vs-jasmine) –

risposta

333

Karma è un browser test runner.

L'idea è che i browser non abbiano un concetto nativo di caricare i file di test, eseguirli e riportare i risultati. Che il karma fa è (più o meno):

  • iniziare un piccolo server web per servire "lato client" javascript file da testare (1)
  • servono anche il javascript file con il "lato client" test (o Spec, come sono spesso chiamati) (2)
  • servono una pagina web personalizzata che verrà eseguito il codice javascript per le prove (3)
  • avviare un browser per caricare questa pagina (4)
  • riporta i risultati del test al server (5)
  • karma può poi di nuovo riportare i risultati in file di testo, la console, qualsiasi cosa il vostro server CI piace, ecc ...

Guardando ogni parte:

(1) Questi file saranno i vostri attuali js File ; dirai al karma come caricarli. Se usi requirejs, c'è un plugin per karma, e alcuni config sono necessari.

(2) Questi test possono essere scritti in una varietà di framework di test Javascript (Jasmine, QUnit, Mocha)  ; questo è il codice JS che viene eseguito nel browser.

(3) La pagina Web personalizzata sarà leggermente diversa per ogni framework di test  ; questo è il motivo per cui il karma ha plugin per diversi quadri.

(4) Karma può avviare la pagina in molti browser (FF, Chrome, o browser senza testa come PhantomJs.)

(5) Segnalazione al karma è, ancora una volta, quadro-dipendente, e trattati con i plugin karma .

Quindi, per rispondere alle vostre domande:

  • in Java, la maggior parte delle persone usano JUnit che è sia una struttura per scrivere i test e farli funzionare, ma non ha il problema di differenziare l'ambiente in cui vengono eseguiti i test e quello in cui i report di test sono aggregati; il karma sarebbe il pezzo mancante tra una JUnit Suite e un JUnit TestRunner
  • Sì, puoi fare tutto ciò che il karma fa "a mano": scegli un framework (gelsomino, qunit, moka) e segui le istruzioni.Il vantaggio del karma è che fornisce una soluzione immediata, se si è in una configurazione standard.
  • karma può essere utilizzato sia per test di unità (con/qualsiasi gelsomino/qunit) e test di integrazione (che utilizzerà un'altra API, come WebDriver, a guidare il browser)
+38

Questo merita un post sul blog o qualcosa del genere. – Willa

+0

Karma può avviare la pagina in molti browser (FF, Chrome o browser headless come PhantomJs.)? anche Jasmine ha ragione? possiamo testarlo su molti framework e scegliere quella configurazione in conf js –

+1

@ Wang'lPakhrin Puoi ovviamente usare jasmine con (m) qualsiasi browser. Quello che intendevo era che, tecnicamente, il karma può lanciare (m) qualsiasi browser in cui vuoi testare. Al momento della scrittura, jasmine non era responsabile per l'avvio effettivo dei browser (non credo ancora che lo faccia). Sperando che chiarisca le cose! – phtrivier

21

La tesi del ragazzo che ha progettato Karma è stato molto istruttivo nel descrivere le soluzioni esistenti e confrontandole, e, naturalmente, descrivendo Karma si muove

https://github.com/karma-runner/karma/blob/master/thesis.pdf

Riassunto: Karma è un corridore di prova. Può essere utilizzato da QUnit, Jasmine, Mocha, ... Karma offre vantaggi agli altri corridori di test per migliorare il ciclo di sviluppo TDD/BDD. "Guarda" i file, quindi quando salvi una modifica, Karma esegue test e rapporti immediatamente, senza passare al browser Web per eseguire il test.

In breve, forse la domanda dovrebbe essere Karma AND Jasmine o Mocha o QUnit?

+2

Puoi un breve riassunto, dal link. Ciò migliora la tua risposta –

+0

Il karma può eseguire test Jest? – SuperUberDuper

+0

puoi guardare anche in Jasmine? penso di sì ma non ricordo bene. –

51

Un modo più breve per capire la differenza:

persone di test con la pianura Jasmine/Mocha molto probabilmente sono in esecuzione tutto il codice con la macchina virtuale Nodo.

L'aggiunta di Karma al mix (in aggiunta al framework esistente scelto) eseguirà la tua suite di test con il motore di altri browser.

In questo modo si ottengono i piccoli extra che si ottengono con un ambiente browser. Sarà più facile testare il codice relativo al DOM, ma dovrai anche rinunciare alle risorse extra fornite dal motore del nodo (come l'accesso al filesystem/shell)