Ruby:Test::Unit::Runner类的未定义方法“%u run\u suite”

Ruby:Test::Unit::Runner类的未定义方法“%u run\u suite”,ruby,Ruby,我尝试使用命令行命令ruby unit_test.rb运行此代码: # unit_test.rb require 'test/unit' class TestWordsFromString < Test::Unit::TestCase def test_smth assert_equal([], []) end end 我收到以下错误: Warning: you should require 'minitest/autorun' instead. Warning: or

我尝试使用命令行命令ruby unit_test.rb运行此代码:

# unit_test.rb
require 'test/unit'
class TestWordsFromString < Test::Unit::TestCase
  def test_smth
    assert_equal([], [])
  end
end
我收到以下错误:

Warning: you should require 'minitest/autorun' instead.
Warning: or add 'gem "minitest"' before 'require "minitest/autorun"'
From:
  /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit.rb:1:in `<top (required)>'
  unit_tests.rb:1:in `<main>'
MiniTest::Unit::TestCase is now Minitest::Test. From /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit/testcase.rb:8:in `<module:Unit>'
/Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit.rb:676:in `<class:Runner>': undefined method `_run_suite' for class `Test::Unit::Runner' (NameError)
    from /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit.rb:261:in `<module:Unit>'
    from /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit.rb:15:in `<module:Test>'
    from /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/test/unit.rb:7:in `<top (required)>'
    from /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Users/User/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from unit_tests.rb:1:in `<main>'
我尝试的是: 1.添加要求“微型测试/自动运行” 2.改为使用bundle exec ruby unit_tests.rb命令运行测试。 3.安装gem“minitest”

这两种解决方案都不起作用。也许我只是做错了测试?我正在阅读《Ruby编程》一书。

答案很简单:

Ruby 1.9.x捆绑包minitest而不是Test::Unit。测试::单元绑定在Ruby中 1.8.x尚未改进,但未绑定测试::单元测试单元正在积极改进


刚刚在RVM上安装了Ruby 1.9,现在一切正常

遇到了示例问题。谢谢你的帖子,它为我指明了正确的方向。只需切换到使用minitest,就可以继续使用Ruby1.9.x

将要求“测试/单元”更改为要求“小型测试/自动运行” 将类TestWordsFromString只需从minitest而不是TestUnit继承测试。

这是转换测试套件的良好开端。还有一些匹配器更改。如果有人在断言不等于时出错,请将其更改为反驳等于。Minitest重命名了assert_not_x匹配器以反驳_x。