2009-09-03 22 views
7

Jak mogę przeprowadzić testy dla mojej aplikacji Railsowej w losowej kolejności? Czy istnieje proste rozwiązanie przy użyciu prowizji?Ruby - Wykonywanie testów w losowej kolejności z prowizją

+3

Dlaczego chcesz to zrobić? –

+2

Aby upewnić się, że nie ma zależności między testami? –

+1

Tak, głównym celem dla nas jest zapewnienie, że nie ma zależności między testami. –

Odpowiedz

0

Możesz chcieć sprawdzić „ZenTest 3.9.0: teraz bardziej zło” (nie można zrobić bezpośrednie łącze, należy użyć cache Google'a)

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

Grałem trochę czasu z ZenTestem, ale nigdy nie zgaduję, jak włączyć losową kolejność. Domyślna kolejność wykonania jest stała i pozostaje taka sama w różnych testowych wykonaniach. –

4

Proszę, określić to w 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

należy pamiętać, że w testach plików nadal będą realizowane w kolejności ich występowania. Wydaje mi się, że można było przeprowadzić testową jednostkę testową, aby to umożliwić.

+0

Dzięki Sam. Nie działa to dla mnie, a właściwie rozwiązanie, które wysłałeś, jest tym samym, do którego przyszedłem: po prostu przetasuj tablicę zawierającą listę plików testowych do wykonania. W rzeczywistości, kolejność plików testowych przekazywanych do testowania rake wydaje się być ignorowana, co oznacza, że ​​wewnętrznie rake będzie sortował listę alfabetycznie na nazwie pliku. Weryfikuję to zachowanie wykonując zadanie rake z opcją TESTOPTS = "- v", aby monitorować rzeczywistą kolejność wykonywania testu. Oto wersje używać: Ruby 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails 2.3.3 Czy masz więcej pomysłów? Tx! –

Powiązane problemy