2016-01-04 18 views
6

Ho un paio di dozzine di moduli di test test Common Test per un'applicazione Erlang che ho scritto. Tutti i test stanno passando ma ritengo che le suite di test siano molto fragili. Il riordinamento dei test causa il fallimento di alcuni di essi. Non ho letto il dependencies chapter in the Common Test documentation e ho spesso fatto ipotesi sullo stato dell'applicazione nei test di unità. Ora vorrei rendere più robusta la mia suite di test.È possibile avere casi di test di esecuzione comuni in un ordine casuale?

Randomize Test Order?

Proveniente da Ruby, dove Rspec esegue i test in ordine casuale, mi piacerebbe avere questa stessa funzionalità in Common Test. Qualcuno sa se c'è un modo per randomizzare l'ordine del test in Common Test? Non ho visto nulla nei documenti sulla randomizzazione dell'ordine di test.

Randomize Valori di ritorno da all/0 e groups/0?

Ho anche pensato di modificare l'output dei callback all/0 e groups/0. In questo momento restituiscono solo elenchi hardcoded. Forse potrei randomizzare l'ordine degli elementi e farli eseguire ogni volta in ordini diversi? Qualcuno ha qualche esperienza che randomizza l'ordine dei test modificando i valori di ritorno della callback in Common Test? Avrei anche bisogno di un modo per rieseguire i test nell'ordine che ha causato il loro fallimento come Rspec's --seed flag.

Grazie in anticipo!

risposta

8

Utilizzando shuffle o {shuffle, Seed} proprietà nella definizione di gruppi di test può essere utile, in questo modo:

groups() -> 
    [{group1, [shuffle], [test1, test2, test3]}, 
    {group2, [shuffle], [test1, test2, test3]}]. 

Se non viene specificato shuffle, verrà eseguito il casi nel gruppo in ordine casuale. Ci sono buoni esempi nella documentazione ufficiale di this.