2009-09-03 7 views
7

Wie kann ich die Tests für meine Rails-App in zufälliger Reihenfolge ausführen lassen? Gibt es eine einfache Lösung mit Rake?Ruby - Ausführen von Tests in zufälliger Reihenfolge mit Rake

+3

Warum möchten Sie das tun? –

+2

Um sicherzustellen, dass keine Abhängigkeiten zwischen den Tests bestehen? –

+1

Ja, der wichtigste Punkt für uns ist sicherzustellen, dass keine Abhängigkeiten zwischen den Tests bestehen. –

Antwort

0

können Sie möchten überprüfen, "ZenTest 3.9.0: jetzt mit mehr Evil" (kann eine direkte Verbindung nicht tun, verwenden Sie die Google-Cache)

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

Ich spielte einige Zeit mit ZenTest, aber ich rate nie, wie man zufällige Reihenfolge aktiviert. Ich meine, die Standardausführungsreihenfolge ist festgelegt und bleibt über verschiedene Testausführungen hinweg gleich. –

4

Hier gehen Sie definieren diese 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

beachten sie, dass nach wie vor innerhalb der Datei Tests werden in der Reihenfolge erscheinen sie ausgeführt werden. Ich schätze mal, du könntest mit dem Affen Patch Testgerät dafür sorgen.

+0

Danke Sam. Dies funktioniert nicht für mich, und tatsächlich die Lösung, die Sie gebucht haben, ist die gleiche, die ich kam: einfach mischen das Array mit der Liste der Testdateien zur Ausführung. In der Tat scheint die Reihenfolge der Testdateien, die Sie an die Rake-TestTask übergeben, ignoriert zu werden, was bedeutet, dass intern Rake diese Liste alphabetisch nach dem Namen der Datei sortiert. Ich verifiziere dieses Verhalten, indem ich den Rake-Task mit der Option TESTOPTS = "- v" ausführe, um die tatsächliche Testausführungsreihenfolge zu überwachen. Hier sind die Versionen ich benutze: Rubin: 1.8.6 - 114 RubyGems: 1.3.5 Schwader: 0.8.7 Rails: 2.3.3 Haben Sie weitere Ideen? Tx! –