2013-12-16 43 views
1

一些測試需要互聯網連接,另一些測試則不需要。所以它們被分成兩個具有不同文件名模式的測試組。如何在Rakefile下面更新,以便可以使用不同的rake任務分別運行它們?用耙測試任務測試一組特定的測試案例

看起來問題/回答here在這種情況下沒有幫助。

下面的rakefile運行所有測試用例,無論在命令行上調用哪些rake任務。按預期方式,rake testrake itest都不起作用。

目前Rake文件內容,

require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.test_files = FileList['test/test_*.rb'] 
end 

Rake::TestTask.new do |t| 
    t.test_files = FileList['test/itest_*.rb'] 
end 

desc "Run tests with no internet required" 
task :default => :test 

desc "Run tests need internet connection" 
task :internet => :test 
+3

需要互聯網連接的測試可能比單元測試錯位集成測試。單元測試應該只測試*一個單元*,因此測試連接到互聯網的代碼以及連接另一端的應用程序遠遠超出了單元測試的範圍。我會在單元測試中剔除遠程請求,並將其他所有內容(需要interwebs)移到單獨的集成套件中。然後分開運行它很容易。 –

+0

我同意你的意見。我已經更新了這個問題,以反映我爲實現目標所做的努力,但我仍然無法做到。註釋? – canoe

回答

2

我已經想通了如何與不同的rake任務不同testtask關聯。訣竅是在創建新測試任務的同時添加任務名稱。像這樣,

Rake::TestTask.new(:default) do |t| 
    t.test_files = FileList['test/test_*.rb'] 
end 

Rake::TestTask.new(:internet) do |t| 
    t.test_files = FileList['test/itest_*.rb'] 
end 

desc "No internet connection required" 
task :default => :test 

desc "Needs internet connection" 
task :internet => :test 

因此rake internet只會運行需要互聯網連接的測試用例。

+0

您應該將其標記爲已回答! – kwerle