在OS X上的Eclipse中,Ruby单元测试失败

时间:2016-11-07 00:03:46

标签: ruby eclipse macos homebrew

我终于使用Programming Ruby 1.9来学习Ruby了。我在OS X上使用Brew安装了Ruby,并安装了Ruby 2.0。

大多数练习在Eclipse中运行良好,但是当我开始创建单元测试的第一个例子时,我开始遇到麻烦。

在Eclipse中,我创建了一个测试用例,如:

  require_relative 'WordsFromString'
  require 'minitest/autorun'

  class TestWordsFromString < Test::Unit::TestCase
    ...
  end

当我将其作为Ruby测试运行时,我得到以下输出:

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- test/unit/ui/console/testrunner (LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /Applications/Eclipse.app/Contents/Eclipse/configuration/org.eclipse.osgi/1276/0/.cp/testing/dltk-testunit-runner.rb:1:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'

我认为我的基本Ruby安装可能有问题,因为如果我尝试从命令行运行它,我会得到:

Asok:work_freq jeff$ ruby TestWordsFromString.rb 
TestWordsFromString.rb:4:in `<main>': uninitialized constant Test (NameError)
编辑:在Ursus的帮助下,我发现只要require和基类一致,命令行就可以工作。

因此,以下任一方法都允许命令行成功执行测试用例。

  require 'minitest/autorun'    
  class TestWordsFromString < MiniTest::Unit::TestCase

  require 'test/unit'
  class TestWordsFromString < Test::Unit::TestCase

所以现在我只需要在Eclipse中使用它。

2 个答案:

答案 0 :(得分:1)

尝试

class TestWordsFromString < Minitest::Test

答案 1 :(得分:0)

在寻找答案时,我偶然发现了Ruby issue 这似乎是相关的。由于我是Ruby的新手,我不确定我是否完全理解它,但我从中得到的是与安装gem 测试单元相关的意外行为存在于Ruby 1.9中。我没有安装任何宝石,所以我尝试了:

gem install test-unit

之后,单元测试在Eclipse和命令行中成功执行。