2012-01-26 36 views
31

Tôi đang nghiên cứu bằng cách sử dụng công cụ xây dựng Rake để tự động hóa các thử nghiệm đơn vị chạy. Tôi đã tìm kiếm trên web, nhưng tất cả các ví dụ đều sử dụng đường ray. Tôi thường chỉ viết các chương trình dòng lệnh nhỏ hoặc các ứng dụng Sinatra đơn giản.Chạy thử nghiệm đơn vị Ruby với Rake

Vì vậy, tôi đã đưa ra những điều sau đây (có thể là xấu) giải pháp mà chỉ mô phỏng những gì tôi sẽ làm gì vào dòng lệnh: (Tôi chỉ cần chạy một kiểm tra đơn vị làm ví dụ.)

desc 'Run unit tests' 
task :test do 
    sh 'ruby -I lib test/test_entry.rb' 
end 
task :default => :test 

Nó hoạt động , nhưng tôi không thể không nghĩ rằng phải có một cách tốt hơn, chỉ cần viết require 'test/test_entry.rb' không hoạt động. Tôi gặp sự cố require, Ruby không thể tìm thấy thư mục lib, nơi tất cả các tệp đều có.

Trả lời

60

Sử dụng Rake :: TestTask http://rake.rubyforge.org/classes/Rake/TestTask.html. Đặt tệp này vào tệp Rake của bạn và sau đó chạy rake test:

require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.libs << "test" 
    t.test_files = FileList['test/test*.rb'] 
    t.verbose = true 
end 
+0

Cảm ơn rất nhiều. Điều này làm việc rất tốt! – kmikael

+0

Nếu bạn muốn tổ chức các bài kiểm tra của mình vào các thư mục con, hãy thử ''test/**/test * .rb'' để phù hợp với điều đó. – tadman

2

Sự cố là thư mục lib của bạn không được bao gồm trong đường dẫn tải của ruby. Bạn có thể sửa chữa nó như thế:

$:.unshift 'lib' 
require 'test_entry' 

hoặc đáng tin cậy hơn thay thế cho biết thêm mở rộng con đường của lib thư mục vào con đường tải:

$:.unshift File.expand_path(File.join(File.dirname(__FILE__), 'lib')) 
require 'test_entry' 

Btw, toàn cầu biến $: có nhiều tiết bí danh $LOAD_PATH.

+0

Cũng xin cảm ơn mẹo này. – kmikael

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