如果通过rake运行,则第一次单元测试失败

时间:2011-08-06 17:54:58

标签: ruby rake

我的项目中有Rakefile

mt_server_dir = File.expand_path('vendor/murder_traffic_server')

Rake::TestTask.new("test_vendor") do |t|
  chdir mt_server_dir
  t.libs = [mt_server_dir]
  t.test_files = Dir["#{mt_server_dir}/tests/test_*"]
  t.warning = true
end

当我运行测试时

rake test_vendor

列表中的首次测试,始终为fail

有错误。

test_ip.rb:55: warning: instance variable @ip not initialized

这意味着,不是在第一次测试中执行设置方法。

当我直接进行测试时。

ruby test_ip.rb

测试成功。

我尝试将第一个测试重命名为test_zip.rb,当我通过rake运行测试时,测试成功,但是在列表测试中首先测试test_dns.rb失败。

谁知道如何解决它?

感谢。

1 个答案:

答案 0 :(得分:2)

我在Github上查看了你的应用程序的源代码。

您的test_ip.rb文件定义了class TestIp < Test::Unit::TestCase。但是,您的test_dns.rb文件定义了class TestIp < Test::Unit::TestCase,而它应该定义class TestDns。由于该文件也有def setup,因此该设置方法会覆盖test_ip。这就是您看到此错误的原因:

/home/dylan/dev/Murder-traffic/vendor/murder_traffic_server/tests/test_dns.rb:7: warning: method redefined; discarding old setup
/home/dylan/dev/Murder-traffic/vendor/murder_traffic_server/tests/test_ip.rb:7: warning: previous definition of setup was here

因此,修复test_dns.rb文件中的类声明,一切都应该有效。