通过Rake测试运行时,不会调用最小的#setup和#teardown

时间:2012-11-30 06:41:57

标签: ruby testing minitest

我有一个MiniTest套件。我使用的是基本的Minitest::Unit::TestCase,而不是规格。我在setup子类中定义了teardownTestCase个方法。当我运行这样的测试文件时,它们可以很好地工作:ruby test/whatever_test.rb。但是,当我运行rake test时,setupteardown未被调用。我的Rakefile的相关部分是:

require 'rake/testtask'

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

为什么在使用setup时不会运行teardownRake::TestTask

我会将测试用例代码粘贴到此处,但其中包含很多内容。如果你想看到一个特定的部分,我肯定会粘贴它的一些子集。

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

2 个答案:

答案 0 :(得分:17)

问题是另一个测试用例覆盖了setupteardown方法。我不小心给了两个相同类名的测试用例,这就是覆盖发生的原因。当然,当我运行单个测试用例时,这个错误没有发生,这解释了使用Rake时行为的差异。

答案 1 :(得分:1)

就我而言,我正在为套接字通信编写测试,并添加了一个名为send的辅助方法。由于MiniTest在内部使用send来调用拆解方法,而是调用我自己的send而不是方法调度。