如何使rake测试不使用默认的minitest?

时间:2015-04-19 21:58:54

标签: ruby rubygems rake minitest

我正在关注RubyGems的Make your own Gem指南。执行rake test指令失败如下:

> rake test
~/.rbenv/versions/2.1.2/lib/ruby/2.1.0/minitest/unit.rb:26:in `const_missing': uninitialized constant MiniTest::Test (NameError)
<rest of output truncated>

我认为这是因为使用的最小版本是4.7.5而不是5.6.0(或MiniTest::Test有效所需的任何5.0.0系列)。所以我安装了minitest 5.6.0,现在我有两个版本的minitest。但是rake test仍然只会使用4.7.5版本。

如何制作,以便在指南设置中运行rake test使用正确的minitest

直接使用ruby:

 > ruby -Ilib test/test_hola.rb
 Run options: --seed 48777

 # Running:

 ...

 Finished in 0.002862s, 1048.3550 runs/s, 1048.3550 assertions/s.

 3 runs, 3 assertions, 0 failures, 0 errors, 0 skips

删除minitest 4.7.5几乎是不可能的;)。

设置

  • Ruby 2.1.2在rbenv 0.4.0-129-g7e0e85b
  • rake(10.1.0)
  • minitest(5.6.0,4.7.5)
  • Ubuntu 14.04

修改

gem "minitest"和/或Rakefile中添加test_hola.rb并不能解决问题。

2 个答案:

答案 0 :(得分:0)

我使用的解决方案是删除位于以下位置的旧的minitest目录: ~/.rbenv/versions/2.1.2/lib/ruby/2.1.0/minitest/

确实,尽管gem list minitest -d返回:

*** LOCAL GEMS ***

minitest (5.6.0, 4.7.5)
    Author: Ryan Davis
    Homepage: https://github.com/seattlerb/minitest
    License: MIT
    Installed at (5.6.0): ~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
                 (4.7.5, default): ~/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0

minitest provides a complete suite of testing facilities supporting
TDD, BDD, mocking, and benchmarking

default minitest位置实际上是~/.rbenv/versions/2.1.2/lib/ruby/2.1.0/minitest/。报告的较新minitest(本例中为5.6.0)的位置是正确的。

答案 1 :(得分:-1)

您的Rakefile的以下行:

gem "minitest"