2009-09-03 26 views
7

Làm cách nào để thử nghiệm ứng dụng Rails của tôi được thực hiện theo thứ tự ngẫu nhiên? Có giải pháp đơn giản nào khi sử dụng cào không?Ruby - Thực hiện kiểm tra theo thứ tự ngẫu nhiên với rake

+3

Tại sao bạn muốn làm điều đó? –

+2

Để đảm bảo rằng không có sự phụ thuộc giữa các thử nghiệm? –

+1

Vâng, điểm chính của chúng tôi là đảm bảo rằng không có sự phụ thuộc giữa các thử nghiệm. –

Trả lời

0

Bạn có thể muốn kiểm tra "ZenTest 3.9.0: bây giờ với Ác hơn" (không thể làm một liên kết trực tiếp, sử dụng bộ nhớ cache của google)

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

Tôi đã chơi một số thời gian với ZenTest, nhưng tôi không bao giờ đoán làm thế nào để kích hoạt thứ tự ngẫu nhiên. Ý tôi là, thứ tự thực hiện mặc định là cố định và vẫn giữ nguyên trên các lần thực hiện kiểm tra khác nhau. –

4

Ở đây bạn đi, xác định này trong 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

Hãy ghi nhớ rằng trong các bài kiểm tra tập tin vẫn sẽ được thực hiện theo thứ tự chúng xuất hiện. Tôi đoán bạn có thể kiểm tra đơn vị kiểm tra khỉ để cho phép điều đó.

+0

Cảm ơn Sam. Điều này không phù hợp với tôi, và thực sự giải pháp bạn đã đăng là cùng một giải pháp mà tôi đã đưa ra: chỉ cần trộn mảng chứa danh sách tệp thử nghiệm để thực thi. Như một vấn đề của thực tế, thứ tự của các tập tin kiểm tra bạn vượt qua để rake TestTask dường như bị bỏ qua, có nghĩa là trong nội bộ sẽ sắp xếp danh sách này alfabetically trên tên của tập tin. Tôi xác minh hành vi này thực thi tác vụ rake với tùy chọn TESTOPTS = "- v", để theo dõi thứ tự thực thi kiểm tra thực tế. Dưới đây là các phiên bản tôi sử dụng: Ruby: 1.8.6 - 114 RubyGems: 1.3.5 Rake: 0.8.7 Rails: 2.3.3 Bạn có nhiều ý tưởng? Tx! –

Các vấn đề liên quan