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

How to make rake test not use the default 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 几乎是不可能的 ;)。

设置

编辑

Rakefile and/or test_hola.rb 中添加 gem "minitest" 没有解决问题。

以及您的 Rakefile 的以下行:

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)的报告位置是正确的。