2012-11-30 128 views
7

我有一個MiniTest套件。我正在使用基本的Minitest::Unit::TestCase,而不是規格。我在我的TestCase子類中定義了setupteardown方法。當我運行如下測試文件時,它們完美地工作:ruby test/whatever_test.rb。但是,當我運行rake test時,setupteardown未被調用。我的Rake文件的相關部分是:Minitest #setup和#teardown在通過Rake測試運行時未調用

require 'rake/testtask' 

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

爲什麼不setupteardown可以在使用Rake::TestTask運行?

我會將測試用例代碼粘貼到這裏,但其中有很多。我肯定會粘貼它的一部分,如果有一個特定的部分,你想看到。

我在Ruby 1.9.3-p194上運行Minitest 4.3.2。

+1

你能發佈一個最小化的非工作測試嗎? – tadman

回答

14

問題是另一個測試用例覆蓋setupteardown方法。我不小心給了兩個測試用例相同的類名,這就是覆蓋發生的原因。當然,當我運行單個測試用例時,這個錯誤並沒有發生,這就解釋了在使用Rake時行爲的差異。

+0

在Rails 5 System測試中(使用minitest)有這個類似的問題。當我們運行所有系統測試時,系統測試的設置方法沒有被執行,但是當我們只運行該系統測試文件時,它正在執行。我們的修復只是將系統測試文件重命名爲其他內容,並修復了正在發生的重寫。謝謝! – Neil

1

就我而言,我正在編寫套接字通信測試,並添加了名爲send的幫助器方法。由於MiniTest在內部使用send來調用拆卸方法,因此它調用我自己的send而不是方法調度。

相關問題