2009-07-10 6 views
8

Per Javascript esistono alcuni framework di test, come JSUnit o js-test-driver. Stanno bene, ma eseguono i test in un browser. Va bene, soprattutto per verificare la tua webapp è in esecuzione in diversi browser. Ma in via continua-integration-server non è installato nessun sistema-finestra (e nessun browser). Quindi c'è un modo per eseguire i test senza l'utilizzo di un browser? La cosa migliore sarebbe utilizzare uno dei framework esistenti, in modo che gli sviluppatori possano eseguire localmente i test nei loro browser e il sistema di integrazione continua li esegua senza browser.Quale framework di test per Javascript supporta il test senza browser?

+2

Non è una risposta alla tua domanda, ma ti suggerirei di provare la cosa in un vero browser. Questo è ciò che vedranno gli utenti finali, quindi questo dovrebbe essere testato. Su quale sistema operativo è installato l'elemento di configurazione? –

+1

L'elemento della configurazione è installato su Linux, ma senza X. Pertanto, il test del server CI non consente di eseguire test in un browser. Nei browser verrà comunque testato dagli sviluppatori, ma voglio aggiungere anche i test a CI. – Mnementh

+0

Che ne dici di phantomjs? – ShrekOverflow

risposta

1

Potreste essere interessati a HtmlUnit che viene utilizzato da diversi framework di interfaccia utente-test come WebDriver

1

jsTest può essere eseguito da riga di comando o come plug-in di eclissi.

Tuttavia, fare attenzione, non sarà possibile ottenere una copertura del 100% del codice utilizzando uno strumento come questo se è necessario supportare più browser. Ogni browser implementa JavaScript in modo diverso (es .: IE). Pertanto, l'unico modo per testare completamente il tuo JavaScript è eseguire i test in tutti i browser supportati.

+0

Non sono sicuro del perché dici che non puoi ottenere una copertura del 100%. Copertura significa che il codice viene eseguito. Il problema a cui punti (compatibilità cross-browser) è che lo stesso codice potrebbe significare (e fare) cose diverse in diversi ambienti di esecuzione. L'implicazione di ciò è che se hai una copertura del 100% in Firefox, potrebbe non dirti tutto ciò che vuoi sapere sul comportamento del codice in IE. Puoi ottenere una copertura del 100% senza conoscere al 100%.(E anche una copertura del 100% in tutti i browser non equivale al 100% di conoscenza, ma questo è un altro problema.) –

+0

Questo era 5 anni fa. Lo sviluppo Web allora era pieno di biforcazioni dipendenti dal browser poiché le API erano così disparate. Se hai eseguito il test in Firefox, alcuni programmi da riga di comando, ecc., Non puoi eseguire _questo codice del codice nell'altro ramo che gestiva un altro browser. Dal momento che stai lasciando la metà dei tuoi rami non testati, non puoi rivendicare la copertura del 100% del codice. Al giorno d'oggi, il paesaggio è molto diverso. Onestamente non ricordo l'ultima volta che ho dovuto fare cose diverse per browser diversi. – geowa4

0

Credo che Canoo WebTest possa essere eseguito senza un browser. E 'fondamentalmente un quadro frontend test, ma può essere usato per testare JavaScript così:

http://webtest.canoo.com/

0

JSpec può essere funziona senza browser (usando Rhino). Ma supporta anche l'esecuzione nei browser.

http://visionmedia.github.com/jspec/

fornisce anche un bel sintassi specifica di stile:

describe 'ShoppingCart' 
    describe 'addProduct' 
    it 'should add a product' 
     cart.addProduct('cookie') 
     cart.addProduct('icecream') 
     cart.should.have 2, 'products' 
    end 
    end 
end 

Eseguendo tutti i test di unità al di fuori di un browser, è anche ottenere i benefici di garantire la separazione della logica dalla html/livello di presentazione (utile per le app Web, probabilmente eccessivo per piccoli script).

+0

Il progetto jspec è morto e, prima che il loro sito sparisse completamente, raccomandò invece Jasmine. http://stackoverflow.com/questions/3912312/jspec-no-longer-supported –

0

Jasmine funzionerà abbastanza felicemente all'interno di node.js.

Problemi correlati