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

我正在关注RubyGems的Make your own Gem Guide。 执行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)  

我认为这是因为使用的最小版本是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下
  • 耙子(10.1.0)
  • minitest(5.6.0,4.7.5)
  • Ubuntu 14.04

编辑

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

我使用的解决方案是删除位于以下位置的旧的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 )是正确的。

以及你的Rakefile的以下行:

 gem "minitest"