如何使用lib minitest或Test:Unit对单元测试进行着色?

pos*_*eid 14 ruby testunit minitest

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

require 'minitest/autorun'
require 'minitest/unit'
require 'minitest/pride'
Run Code Online (Sandbox Code Playgroud)

我明白了:

/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)
Run Code Online (Sandbox Code Playgroud)

由代码引起:

MiniTest::Unit.output = PrideIO.new(MiniTest::Unit.output)
Run Code Online (Sandbox Code Playgroud)

我见过一个有效的Rspec变种.不幸的是,我的Ruby知识还不足以看出差异.

Col*_*ean 14

变成一个旋转.

将其添加到您的Gemfile:

group :test do
  gem 'turn', :require => false
end
Run Code Online (Sandbox Code Playgroud)


小智 13

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

gem install minitest
Run Code Online (Sandbox Code Playgroud)

第2步:在命令行中输入"minitest/pride",而不是在代码中

ruby -rminitest/pride your_ruby_script.rb
Run Code Online (Sandbox Code Playgroud)

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

require 'minitest/autorun'
Run Code Online (Sandbox Code Playgroud)

如果你使用Rubymine,只需添加

-rminitest
Run Code Online (Sandbox Code Playgroud)

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

-e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) -rminitest/pride
Run Code Online (Sandbox Code Playgroud)


小智 1

截至 2023 年底,已接受的答案不再有效。然而,以下内容确实如此。

require "minitest"
Minitest.load_plugins
require "minitest/pride"
Run Code Online (Sandbox Code Playgroud)

将上述代码包含在 例如 中test/test_helper.rb,或者放置所有测试通用代码的任何位置。这将为您提供与此类似的测试运行:

使用自豪测试输出着色器运行 minitest