2012-04-25 3 views
22

Ho un gruppo di attività definite RSpecRake che mi piacerebbe eseguire in un ordine specifico quando eseguo l'intera suite di test.Esecuzione di attività RSpec in un ordine specifico

Ho provato qualcosa di simile:

task :run_in_order => [:one, :two, :three] do 
    puts "Run suite of tests" 
end 

e corre la prima prova e poi si ferma e non viene eseguito il resto delle attività.

Quindi se si utilizza la sintassi di Rake non funziona. C'è un modo per notare le dipendenze delle attività per le attività di RSpec Rake?

+2

Non farlo, è una pessima pratica perché i test dovrebbero essere indipendenti l'uno dall'altro – luacassus

+8

@luacassus ne sono a conoscenza. Sto lavorando per ottenere qualcosa per non farlo in questo modo. Comunque nel frattempo, questo è il modo in cui stanno le cose. Quindi sto cercando una risposta diversa da "non farlo". Questo non è tecnicamente possibile con Rspec? – Hillary

+1

Forse "non farlo" per scoprire effettivamente se i test passano, ma se stai facendo una corsa per produrre un report delle specifiche da discutere con un cliente, allora è possibile produrre il report in un ordine significativo praticamente essenziale – digitig

risposta

45

Scegli questa http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/

order rand Abbiamo aggiunto un'opzione --order con due valori supportati: rand e predefiniti.

rspec - ordine casuale (o rand) indica a RSpec di eseguire i gruppi in un ordine casuale , quindi di eseguire gli esempi all'interno di ciascun gruppo in ordine casuale . Lo abbiamo implementato in questo modo (piuttosto che completare la randomizzazione di ogni esempio) perché non vogliamo ri-eseguire costoso prima (: tutti) i ganci. Un compromesso equo, poiché la randomizzazione risultante è altrettanto efficace nell'esaminare i bug di dipendenza dall'ordine.

Quando si utilizza - ordine casuale, RSpec stampa il numero casuale che è utilizzato per inizializzare il randomizzatore. Quando si pensa di aver trovato un bug ordine-dipendenza, è possibile passare il seme lungo e l'ordine sarà rimanere coerente:

--order rand: 3455 --order predefinita dice RSpec per caricare gruppi ed esempi come sono dichiarati in ogni file

Fondamentalmente è necessario ordinare i test in un file spec e quindi eseguirlo con l'opzione --order default. .