我对许多匿名TestCases进行了测试。它适用于测试单元2.5.0,但实际版本2.5.3会产生错误。
当我运行此测试时:
gem 'test-unit', ">=2.5.2"
require 'test/unit'
Class.new( Test::Unit::TestCase ) do
def test_add
assert_equal( 2, 1+1)
end
end
没有执行任何测试,我在undefined method sub' for nil:NilClass (NoMethodError)
中收到错误testrunner.rb:361
(我使用的是实际的test-unit-gem 2.5.3)。
使用TestCase的名称,问题消失了:
gem 'test-unit'
require 'test/unit'
X = Class.new( Test::Unit::TestCase ) do
def test_add
assert_equal( 2, 1+1)
end
end
在我真正的问题中,我生成了许多TestCase。所以我有这样的情况:
gem 'test-unit'
require 'test/unit'
2.times {
X = Class.new( Test::Unit::TestCase ) do
def test_add
assert_equal( 2, 1+1)
end
end
}
如果我执行此操作,我会收到警告already initialized constant X
并出现错误:
comparison of Array with Array failed (ArgumentError)
(在collector.rb:48:sort_by'中)。
我的问题:
答案 0 :(得分:3)
这似乎归结为test-unit
gem的最新版本的更改,现在需要一个类的可读名称。
这样的东西会起作用
gem 'test-unit', ">=2.5.2"
require 'test/unit'
Class.new( Test::Unit::TestCase ) do
def test_add
assert_equal( 2, 1+1)
end
def self.to_s
"GeneratedClass"
end
def self.name
to_s
end
end