2012-03-27 23 views
8

Ho usato qunit per scrivere una serie di test per il codice javascript che ho. In questo momento, per qualche motivo, verrà eseguito il primo test della mia lista, quindi verrà eseguito l'ULTIMO test nell'elenco, seguito dal penultimo, dal terzo all'ultimo, dal quarto all'ultimo, ecc ... È fondamentale per i miei test che le cose corrono nell'ordine in cui le ho inserite. Ho provato a disattivare quell'opzione in cui qunit esegue test che hanno fallito l'ultima volta, ma lo fa ancora. C'è un modo per risolvere questo problema?Ottenere QUnit per eseguire i test nell'ordine

risposta

11

In primo luogo, capire perché i test devono essere eseguiti in un ordine specifico. L'intero punto di test unitario è che i test sono atomici e dovrebbe essere possibile eseguirli in qualsiasi ordine - se la tua suite di test non è in grado di farlo, è necessario capire perché, poiché potrebbe rappresentare un problema più grande.

Se non riesci a capirlo, potrebbe essere necessario suddividere la suite di test in gruppi più piccoli di test fino a trovare quelli che causano il problema.

modifica: trovato questo riferimento allo http://www.educatedguesswork.org/2011/06/curse_you_qunit_1.html. Apparentemente, aggiungere questo alla tua suite di test aiuterà QUnit.config.reorder = false;

+0

No, so perché. Per aumentare l'efficienza (Non voglio entrare nei dettagli, ma al momento ogni test richiede molto tempo per essere eseguito e ho bisogno di rendere le cose il più snelle possibili). Alcuni test si basano sui risultati di un test precedente. Posso rendere tutto atomico ma poi tutto richiede ancora più tempo di quello che già fa. Una volta che sono messo in una posizione in cui il tempo non conta, posso tornare a un modello atomico, ma per ora voglio che i miei test vengano eseguiti nell'ordine in cui li ho scritti per efficienza. – user1028497

+2

@ user1028497 "Alcuni test si basano sui risultati di un test precedente", quindi non si dispone di atomicità: è necessario preparare ciò che è necessario per il test nel test stesso. – unludo

+0

Lo stavo facendo sì. Ma in questo momento ho bisogno di efficienza, e questo era il modo migliore di fare le cose. Non voglio spiegare tutto, ma basti dire che in questo momento ho bisogno di test da eseguire nell'ordine in cui li ho inseriti. – user1028497

0

Forse potresti prendere in considerazione l'inserimento del codice che esegue ogni calcolo principale in una funzione che ha un test all'inizio che controlla se il calcolo è già stato eseguito. Se il calcolo non viene eseguito, esegui il calcolo e salva il risultato da qualche parte. Se il calcolo è già stato fatto, è sufficiente restituire i risultati. In questo modo è possibile avere un singolo calcolo per tutti i test, ma essere ancora autonomi rispetto all'ordine in cui vengono eseguiti i test.

Posso riferire ai problemi dei calcoli che richiedono molto tempo nei test di unità, ma è fondamentale per il gruppo di prova essere in grado di eseguire qualsiasi test di unità ed eseguirlo come test indipendente autonomo. Questo è particolarmente vero quando si presenta un problema critico che deve essere affrontato in modo specifico.

Problemi correlati