15

我想在我的开发环境中进行单元测试输出颜色。但是,我无法让它在 Linux(Debian 和 Ubuntu)上运行。当我包含以下库时:

require 'minitest/autorun'
require 'minitest/unit'
require 'minitest/pride'

我得到:

/usr/local/rvm/gems/ruby-1.9.2-p136/gems/minitest-2.3.1/lib/minitest/pride.rb:35:in `<top (required)>': undefined method `output' for MiniTest::Unit:Class (NoMethodError)

由代码引起:

MiniTest::Unit.output = PrideIO.new(MiniTest::Unit.output)

我已经看到了一个有效的Rspec 变体。不幸的是,我的 Ruby 知识不足以看出差异。

4

7 回答 7

14

转一

将此添加到您的 Gemfile 中:

group :test do
  gem 'turn', :require => false
end
于 2011-10-04T19:22:19.090 回答
13

第 1 步:使用最新版本的 gem(我认为它将在 Ruby 1.9.3 中修复)

gem install minitest

第 2 步:在命令行上需要“minitest/pride”,而不是在您的代码中

ruby -rminitest/pride your_ruby_script.rb

..在你的代码中只需要'minitest/autorun'

require 'minitest/autorun'

如果您使用 Rubymine,只需添加

-rminitest

在测试的默认配置中。=> 配置想要

-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) -rminitest/pride
于 2011-07-23T18:05:42.877 回答
4

只需在 require 'rails/test_help' 之后将这些行添加到您的 test_helper.rb 文件中

require "minitest/reporters"
Minitest::Reporters.use!

在你的 gemfile 添加

gem 'minitest-reporters', '~> 1.0.7'

这将使您的 rake 测试变为红色和绿色,但它也会带来回溯。要摆脱所有这些额外的回溯日志,请将其添加到您的 gemfile 然后捆绑:

gem 'mini_backtrace'

然后在 config/initializers/backtrace_silencers.rb 添加这一行来削减所有额外的 rvm 东西

Rails.backtrace_cleaner.add_silencer { |line| line =~ /rvm/ }

希望对您有用,如果您需要更多详细信息,请告诉我。

于 2014-11-16T17:15:38.260 回答
3

请参阅https://github.com/tenderlove/purdytest/issues/1。这似乎是 1.9.2 附带的 minitest 版本的一个已知错误。对于其他人,添加

gem "minitest"

在您文件的最顶部就可以了。

于 2011-07-07T11:46:55.787 回答
1

我目前使用purdytest1.9.2

于 2011-09-06T08:36:09.500 回答
0

试试看这篇关于使用 turn gem 为 minitest 提供漂亮和可配置的输出的帖子。 http://rawonrails.blogspot.com/2012/01/better-minitest-output-with-turn-gem.html

于 2012-01-12T02:02:28.170 回答
-1
$ gem install mynyml-redgreen --source http://gemcutter.org

# in your test file
require 'redgreen'

顺便说一下,redgreen 和 turn 可以很好地协同工作

于 2011-10-07T04:04:34.503 回答