2012-11-30 79 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而不是方法调度。

相关问题