代码之家  ›  专栏  ›  技术社区  ›  ryeguy

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

  •  0
  • ryeguy  · 技术社区  · 14 年前

    这是我的测试套件:

    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
    

    宏应该生成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 回复  |  直到 14 年前
        1
  •  1
  •   ryeguy    14 年前

    出于某种原因,问题是我需要安装 test-unit 因为我在运行Ruby1.9。我听说这是因为 Test::Unit 不再包含在1.9中,但我不理解这一点,因为看起来我的测试仍然运行正常(我没有安装gem)。

        2
  •  0
  •   Jo Liss    14 年前

    如果其他人有此问题:

    我遇到这个问题是因为我使用了 assert2 宝石。查看我的日志 "Why I stopped using assert{ 2.0 }" .安装 test-unit 我没有解决问题,结果我把它移走了。 断言2 而是从我的GemFile。

    编辑: 显然,minitest的test::unit wrapper(可能是原始的test::unit)会自动安装一个出口处理程序来运行测试。(恶心,不是吗?;-)因此,在任何意外注册出口处理程序的情况下,这个“空测试套件”问题都可能会出现。