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