Come posso eseguire i test per la mia app Rails in un ordine casuale? C'è una soluzione semplice usando il rake?Ruby - Esecuzione di test in ordine casuale con rake
risposta
Si potrebbe desiderare di check out "ZenTest 3.9.0: ora con più del male" (non si può fare un collegamento diretto, usare la cache di Google)
Added ability to set test execution order, defaults to :random. EVIL!
Ho giocato un po 'di tempo con ZenTest, ma non immagino mai come abilitare l'ordine casuale. Voglio dire, l'ordine di esecuzione predefinito è fisso e rimane lo stesso per diverse esecuzioni di test. –
Qui si va, definire questo in lib/tasks/tasks.rb
namespace :test do
namespace :randomize do
desc "Randomize tests"
Rake::TestTask.new(:all => "db:test:prepare") do |t|
t.libs << "test"
t.test_files = Rake::FileList[
'test/unit/**/*_test.rb',
'test/functional/**/*_test.rb',
'test/integration/**/*_test.rb'
].shuffle
t.verbose = true
end
end
end
Run: rake test:randomize:all
Tenete a mente che nel test sui file verrà comunque eseguito nell'ordine in cui appaiono. Immagino che potresti provare l'unità di prova patch di scimmia per farlo.
Grazie Sam. Questo non funziona per me, e in realtà la soluzione che hai postato è la stessa a cui sono arrivato: mescola semplicemente l'array contenente l'elenco dei file di test da eseguire. In effetti, l'ordine dei file di test che si passa al rake TestTask sembra essere ignorato, il che significa che internamente rake ordinerà alfabeticamente questo elenco sul nome del file. Si verifica questo comportamento nell'esecuzione dell'attività rake con l'opzione TESTOPTS = "- v", per monitorare l'ordine di esecuzione del test effettivo. Qui ci sono le versioni che uso: Rubino: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails: 2.3.3 Avete più idee? Tx! –
Perché vorresti farlo? –
Per garantire che non vi siano dipendenze tra i test? –
Sì, il punto principale per noi è garantire che non ci siano dipendenze tra i test. –