Come integrare un framework di test dell'unità JavaScript basato su browser nel mio flusso di lavoro?

3

Mi sto chiedendo come includere senza problemi un framework di test dell'unità JavaScript nel mio flusso di lavoro.

Il contesto è che abbiamo un algoritmo di elaborazione dei dati esistente + webapp per visualizzarlo, senza test automatici o integrazione continua.

Usiamo Eclipse come nostro IDE.

Per la modifica del webapp JavaScript, sarebbe bello aggiungere alcuni test unitari e qUnit sembra semplice, molto supporto alla comunità ecc. .

Ecco come sto attualmente pensando che il flusso di lavoro sarebbe andato:

  • dirama il codice JavaScript, controllalo, modificalo. Refactor per renderlo più testabile se necessario.
  • Scrivi i test delle unità qUnit secondo il tutorial sopra.
  • Avvia Tomcat in Eclipse, esegui la pagina di test qUnit.
  • Apri il browser, controlla che tutti i test siano passati.
  • Rimetti il codice nel ramo.
  • Unisci il ramo al tronco.
  • A questo punto potrebbe essersi verificato un conflitto di unione, pertanto è necessario eseguire nuovamente i test di unità affinché il trunk verifichi che funzionino ancora.

Il problema qui, sembra ancora un po 'complicato eseguire i test unitari, diversi clic coinvolti per eseguire e controllare i risultati.

Ora con l'unione del problema del trunk, chiaramente una soluzione di integrazione continua come Jenkins sarebbe buona qui, ma dato che per ora è fuori questione, concentriamoci su come possiamo rendere più semplice l'esecuzione dei test come uno sviluppatore

Pensi che mi manchi qualcosa qui, o è quello che sto proponendo ragionevole ragionevole?

    
posta dwjohnston 22.01.2014 - 05:29
fonte

2 risposte

2

Idealmente, il flusso di lavoro deve essere completamente automatizzato end-to-end

Utilizza uno strumento come Karma . Eseguili in minima parte in PhantomJS per rilevare gli errori logici e, idealmente, con tutti i browser supportati. Integralo direttamente nella tua build. Tutto quello di cui hai bisogno per testare la tua app dovrebbe essere qualcosa di simile a

mvn verify

(in questo caso se usi Maven. Se usi say Ant, dovrebbe essere integrato nella tua build di Ant, se usi Grunt ... ottieni il punto).

Niente di più (e intendo). Se eseguendo il test è anche un po 'un problema, si smetterà di eseguirli, che è male. Se è necessario fare clic, non è possibile eseguirli con il proprio server CI, il che è negativo. Se non fa parte della tua build, puoi dimenticarti di eseguirli, il che è male.

Consiglio vivamente di avere un sistema di build IDE agnostico . Altrimenti, è tempo che lo verifichi, prima di ogni altra cosa. Quindi integra i test nella tua build. Il test fallito dovrebbe fallire la compilazione in una questione automatica , senza alcun intervento. In un mondo perfetto, dovrebbe essere impossibile dimenticare di eseguire il test.

Quindi, in conclusione: controlla karma e phantomjs. Questo è ciò che ti aiuterà di più. Ma insisto per fare il miglio supplementare: aggiungi uno script di compilazione completo che controlli la validità del codice in un unico comando. E mentre ci siamo, convalida il tuo javascript con strumenti come JSHint ? In caso contrario, controlla anche questo (e mettilo nella tua build :)). Può catturare molti errori.

    
risposta data 07.02.2014 - 22:17
fonte
0

Ci sono vari modi in cui questo può essere integrato meglio nel tuo flusso di lavoro.

Ho usato qunit per vari progetti su cui ho lavorato e trovo che sia un framework di test javascript molto capace. Tuttavia, l'integrazione nel flusso di lavoro è stata un po 'più complicata. Sto usando Visual Studio e c'è un plugin che fa un sacco di integrazione per me, ma ho anche sperimentato vari modi di eseguire i test delle unità qunit.

La prima cosa che ho trovato utile è stata la possibilità di eseguire i test delle unità javascript da una pagina HTML. Ciò mi ha permesso di capire rapidamente quali test hanno esito positivo e quali test falliscono. Il sito Web qunit fornisce dettagli su come eseguire i test unitari in una pagina HTML. Ciò bloccherebbe almeno la necessità di eseguire tomcat e farebbe risparmiare un paio di clic.

La prossima cosa che è possibile è usare phantomjs e alcuni script per essere in grado di eseguire i test dalla riga di comando. Ciò significa che è possibile eseguire tutti i test rapidamente (sia prima che dopo l'unione). Ecco qualcosa che potrebbe essere utile . Anche se si riferisce alla formica, tutto prima di quel punto sono informazioni utili su come eseguire i test attraverso phantomjs (phantomjs è multipiattaforma, quindi questo dovrebbe funzionare bene con qualsiasi sistema operativo in uso).

Infine potrebbe valere la pena di controllare alcuni dei plugin QUnit qui: link . Sembra che abbiano dei plugin per eseguire i test di qunit tramite phantomjs (non l'ho usato quindi non posso garantire per quanto sia effettivamente utile), e un plugin per formattare l'output (ancora non l'ho usato così non posso davvero dirti quanto è buono il risultato).

    
risposta data 07.02.2014 - 15:05
fonte

Leggi altre domande sui tag