2012-01-26 327 views
31

我正在研究使用Rake構建工具來自動運行單元測試。我搜索了網頁,但所有例子都是使用rails。我通常只編寫小型命令行程序或簡單的Sinatra應用程序。使用Rake運行Ruby單元測試

於是我想出了以下(可能是壞的)解決方案,它只是模仿什麼,我會做的命令行:(我只是跑一個單元測試作爲一個例子。)

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

它的工作原理,但我不禁想到必須有更好的方式,只是寫require 'test/test_entry.rb'不起作用。我得到require問題,Ruby找不到lib目錄,所有的文件都在這裏。

回答

60

使用Rake :: TestTask http://rake.rubyforge.org/classes/Rake/TestTask.html。把它放到你的Rake文件中然後運行: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

非常感謝。這工作得很好! – kmikael

+0

如果你喜歡把你的測試組織到子目錄中,可以試試''test/**/test * .rb''來適應它。 – tadman

2

問題是你的lib目錄沒有包含在ruby的加載路徑中。您可以修復它這樣:

$:.unshift 'lib' 
require 'test_entry' 

或更可靠的替代方案,增加了擴大到加載路徑lib目錄的路徑:

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

順便說一句,全局變量$:有更詳細的別名$LOAD_PATH

+0

謝謝你的提示。 – kmikael

相關問題