2012-05-15 27 views
6

Đã xem this question đã và ít nhiều phản ánh cách tôi hiện đang chạy toàn bộ suite của mình.Làm thế nào để chạy một bộ MiniTest đầy đủ mà không có Rake?

Thêm vào đó, tôi đã thiết lập các nhiệm vụ cào sau:

Rake::TestTask.new do |t| 
    t.name = "spec:models" 
    t.libs << "test" 
    t.pattern = "spec/models/*_spec.rb" 
end 

Nhưng tôi nhận thấy khi tôi chạy này bằng time rake spec:models, mà nó hoàn thành trong khoảng 2,36 giây. Nếu tôi chạy tất cả các bài kiểm tra cá nhân trong thư mục đó bằng cách sử dụng ruby /path/to/spec.rb (tất cả được phân lập từ ActiveRecord hiện tại - không tồn tại, vì vậy siêu nhanh), tổng thời gian tích lũy của người dùng là 2,36 giây, nhưng tôi cũng nhận thấy trong khi mỗi tệp mất 0,4 số giây của người dùng thực thi từ đầu đến cuối, thời gian "thử nghiệm" thực tế được báo cáo bởi MiniTest là nhanh hơn nhiều (chẳng hạn như toàn bộ bộ phần mềm của tôi, sau khi tải depencies, sẽ được thực hiện trong ít hơn 0,15 giây, không phải 2,36 giây).

Ví dụ (đối với một file spec):

Started 

11/11:   100% |======================================| Time: 00:00:00 

Finished in 0.02223s 
11 tests, 15 assertions, 0 failures, 0 errors, 0 skips 
ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total 

Tôi nghi ngờ rằng Rake được tải lại thư viện giữa việc thực hiện mỗi bài kiểm tra, và đó là chiếm thời gian thêm. Có anyway tôi có thể xác minh điều này, hoặc chạy toàn bộ bộ phần mềm của tôi mà không sử dụng Rake?

Btw, khi tôi nói "thời gian người sử dụng" trước đó, tôi đề cập đến số đầu tiên outputted bởi prepending time lệnh ruby ​​của tôi để chạy một tập tin thử nghiệm duy nhất, vì vậy time ruby /path/to/spec.rb = ruby path/to/spec.rb 0.43s user 0.06s system 88% cpu 0.559 total

+0

Bạn đã bao giờ tìm được giải pháp cho điều này chưa? –

Trả lời

1

này sẽ chạy bất kỳ kiểm tra trong thư mục spec và thư mục con với một _spec.rb vào cuối tên tập tin:

ruby -Itest spec/**/*_spec.rb 
+1

Hmm, điều đó dường như chỉ chạy một tệp (kết xuất cuối cùng của tôi với 'ruby -Itest spec/models/* _ spec.rb' hiển thị 5 kiểm tra đã hoàn thành, trong khi chạy' rake spec: models' ở trên cho thấy 77 bài kiểm tra đã hoàn thành). Có chuyện gì thế? – neezer

+0

Tôi muốn biết tại sao gợi ý của Matthew cũng không phù hợp với tôi. –

+1

Tôi nghĩ rằng bạn có thể cần báo giá xung quanh spec/**/_ spec.rb hoặc shell của bạn sẽ mở rộng nó ra, tôi nghi ngờ chỉ là một tập tin, trừ khi bạn đang sử dụng một vỏ hiểu rằng ký hiệu. – Ghoti

5

Tạo một file spec.rb trong thư mục trên cùng của dự án của bạn:

$:<<'spec' # add to load path 
files = Dir.glob('spec/**/*.rb') 
files.each{|file| require file.gsub(/^spec\/|.rb$/,'')} 

Run nó:

ruby spec.rb 

Nếu đây làm việc cho bạn, bạn có thể đổi tên các tập tin spec.rb như bạn muốn, hoặc di chuyển nó đến một vị trí tốt hơn, hoặc thay đổi các đường dẫn tải theo ý muốn vv

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