本题属于zu test-unit version 2.5.3
测试单元版本 2.5.4 解决了问题
我有一个包含许多匿名测试用例的测试。它适用于测试单元 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
没有执行任何测试,我在 testrunner.rb:361
中收到错误 undefined method sub' for nil:NilClass (NoMethodError)
(我使用实际测试-单元 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
在我的实际问题中,我生成了许多测试用例。所以我有这样的情况:
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
和错误:
Array 与 Array 的比较失败 (ArgumentError)
(在 collector.rb:48:in sort_by' 中)。
我的问题:
- 如何避免错误?
- 或者:如何使用动态分配的常量创建测试用例?
最佳答案
这似乎是因为 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
关于ruby - 将测试/单元与匿名测试用例一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429467/