为什么我需要使用minitest/autorun?

Raj*_*ish 5 ruby unit-testing rubygems ruby-on-rails minitest

为什么我需要minitest/autorun而不是test/unit生成单元测试

require 'test/unit'

class Brokened
  def uh_oh
    "I needs fixing"
  end
end

class BrokenedTest < Minitest::Test
  def test_uh_of
    actual = Brokened.new
    assert_equal("I'm all better now", actual.uh_oh)
  end
end
Run Code Online (Sandbox Code Playgroud)

运行上面的代码,解释器引发警告

你应该要求'minitest/autorun'

knu*_*nut 5

您的代码示例将以 NameError: 结尾uninitialized constant Minitest

你有两种可能:

  • 使用test/unit结合Test::Unit::TestCase
  • 使用require 'minitest/autorun'与组合Minitest::Test

test/unit 已弃用,建议使用 minitest(MiniTest 更快更小)。

如果您切换测试 gem,您可能必须更改更多内容:

  • 替换require "test/unit"require "minitest/autorun"
  • 替换Test::Unit::TestCase withMinitest::Test
  • 没有assert_nothing_raised详情
  • assert_raise变成assert_raises.
  • 也许其他一些问题

你可以require 'minitest'改用require 'minitest/autorun'- 你不会得到语法错误,但也没有测试执行。如果你想执行测试,你必须自己调用它们(参见minitest-a-test-suite-with-method-level-granularity