我有一个MiniTest套件。我使用的是基本的Minitest::Unit::TestCase
,而不是规格。我在setup
子类中定义了teardown
和TestCase
个方法。当我运行这样的测试文件时,它们可以很好地工作:ruby test/whatever_test.rb
。但是,当我运行rake test
时,setup
和teardown
未被调用。我的Rakefile的相关部分是:
require 'rake/testtask'
Rake::TestTask.new do |t|
t.test_files = FileList['test/*_test.rb']
t.verbose = true
end
为什么在使用setup
时不会运行teardown
和Rake::TestTask
?
我会将测试用例代码粘贴到此处,但其中包含很多内容。如果你想看到一个特定的部分,我肯定会粘贴它的一些子集。
我在Ruby 1.9.3-p194上运行Minitest 4.3.2。
答案 0 :(得分:17)
问题是另一个测试用例覆盖了setup
和teardown
方法。我不小心给了两个相同类名的测试用例,这就是覆盖发生的原因。当然,当我运行单个测试用例时,这个错误没有发生,这解释了使用Rake时行为的差异。
答案 1 :(得分:1)
就我而言,我正在为套接字通信编写测试,并添加了一个名为send
的辅助方法。由于MiniTest在内部使用send
来调用拆解方法,而是调用我自己的send
而不是方法调度。