当我使用shoulda时,为什么“rake tests”运行空套件?

时间:2010-03-31 23:02:25

标签: ruby-on-rails ruby unit-testing

所以这是我的测试套件:

class ReleaseTest < ActiveSupport::TestCase
  should_not_allow_values_for :title, '', 'blah', 'blah  blah'
  should_allow_values_for :title, 'blah - bleh', 'blah blah - bleh bleh'
  def test_something
    assert true
  end
end

Shoulda的宏生成了5个测试,然后我有test_something以下(只是为了看这是否重要),共计6个测试。如下所示,它们都会通过,但它会运行0测试套件。即使我完全清空ReleaseTest,也会发生这种情况。如果我的config.gem 'shoulda'中有environment.rb,则只会出现此问题。如果我在测试的顶部明确地执行require 'shoulda',一切正常。会导致这种情况的原因是什么?

/usr/bin/ruby -e STDOUT.sync=true;STDERR.sync=true;load($0=ARGV.shift) /var/lib/gems/1.9.1/bin/rake test
Testing started at 6:58 PM ...
(in /home/rlepidi/projects/rails/testproject)
/usr/bin/ruby1.9.1 -I"lib:test" "/var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb" "test/unit/release_test.rb" 

Loaded suite /var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
......
Finished in 0.029335778 seconds.
6 tests, 6 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

/usr/bin/ruby1.9.1 -I"lib:test" "/var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb"  
/usr/bin/ruby1.9.1 -I"lib:test" "/var/lib/gems/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb"  

Loaded suite /var/lib/gems/1.9.1/bin/rake
Started
Finished in 0.000106717 seconds.
0 tests, 0 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
0% passed
Empty test suite.

2 个答案:

答案 0 :(得分:1)

由于某种原因,问题是我需要安装test-unit,因为我正在运行Ruby 1.9。我听说这是因为Test::Unit不再包含在1.9中,但我不明白,因为看起来我的测试仍然正常运行(我没有安装那个gem)。 / p>

答案 1 :(得分:0)

如果其他人遇到此问题:

我遇到了这个问题,因为我使用的是assert2宝石。请参阅我的博文"Why I stopped using assert{ 2.0 }"。安装test-unit并没有解决我的问题;我最终从我的Gem文件中删除了assert2

编辑:显然Minitest的Test :: Unit包装器(可能是原始的Test :: Unit)会自动安装一个退出处理程序来运行测试。 (Icky,不是吗?;-))所以这个“空测试套件”问题可能会在出口处理程序意外注册的任何情况下弹出。