2009-09-03 15 views
7

Rails uygulamasının rasgele bir sırada yürütülmesine yönelik testlere nasıl sahip olabilirim? Komisyon kullanarak basit bir çözüm var mı?Ruby - Testleri rastgele bir sırayla yürütme

+3

Bunu neden yapmak istersiniz? –

+2

Testler arasında herhangi bir bağımlılık olmadığından emin olmak için? –

+1

Evet, bizim için ana nokta testler arasında herhangi bir bağımlılık olmamasıdır. –

cevap

0

Sen kontrol etmek isteyebilirsiniz "ZenTest 3.9.0: şimdi daha Evil" İşte (doğrudan bir bağlantı yapamaz, kullanma google'ın önbellek)

Added ability to set test execution order, defaults to :random. EVIL! 
+0

ZenTest ile biraz zaman geçirdim, ancak rastgele sırayı nasıl etkinleştireceğimi asla tahmin edemem. Yani, varsayılan yürütme sırası sabit ve farklı test yürütmeleri arasında aynı kalır. –

4

, lib/tasks/tasks.rb

bu tanımlar
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 

çalıştırın:

rake test:randomize:all dosya testlerinde içinde hala göründükleri sırayla çalıştırılır unutmayın. Buna izin vermek için maymun yama testi ünitesini tahmin edebilirsin.

+0

Teşekkürler Sam. Bu benim için işe yaramaz ve aslında gönderdiğiniz çözüm, geldiğim yöntemle aynıdır: sadece yürütmek için deneme dosyalarının listesini içeren diziyi karıştırmanız yeterlidir. Aslına bakılırsa, TestTask tırmığına aktardığınız test dosyalarının sırası yok sayılır, yani içten tırmık, bu listeyi dosya adında alfabetik olarak sıralar. Gerçek test yürütme sırasını izlemek için TESTOPTS = "- v" seçeneği ile komisyon görevini yürütmekte olan bu davranışı doğrularım. 114 RubyGems - 1.8.6: 1.3.5 Rake: 0.8.7 Rayları: 2.3.3 var mı fazla fikir Yakut: Burada kullandığım sürümler nelerdir? Tx! –