我有两个单元测试,应该用稍微不同的设置方法共享大量的常见测试。如果我写类似如何继承Ruby中的抽象单元测试?
class Abstract < Test::Unit::TestCase
def setup
@field = create
end
def test_1
...
end
end
class Concrete1 < Abstract
def create
SomeClass1.new
end
end
class Concrete2 < Abstract
def create
SomeClass2.new
end
end
那么Concrete1似乎不会继承Abstract中的测试。或者至少我不能让他们在日食中运行。如果我为包含Concrete1的文件选择“运行所有TestCases”,则即使我不希望它运行,也会运行Abstract。如果我指定Concrete1,那么它根本不运行任何测试!如果我在Concrete1中指定test_1,那么它会抱怨它找不到它(“未捕获的throw:invalid_test(ArgumentError)”)。
我是Ruby的新手。我在这里错过了什么?
感谢 - 这是伟大的!它帮助我最终解决了在Rails功能(控制器)上下文中设置的http://stackoverflow.com/questions/8888614/how-to-write-and-inherit-from-an-abstract-subclass-of-actioncontrollertestcase,测试,因此有一点额外的挑战。 – 2012-01-26 00:24:48
另一个观察:不幸的是,似乎这种方法不允许覆盖所包含的测试。如果测试类必须直接从Test :: Unit :: TestCase继承,那么ActiveSupport :: TestCase和ActionController :: TestCase如何直接从Test :: Unit :: TestCase继承,那么我们就需要另外一个破解来解决这个问题了:-( – 2012-01-26 00:37:27
这对我没有意义。不会导致这个问题中描述的问题?它们不仅仅是Test :: Unit :: TestCase和具体类之间的继承关系吗? – 2012-10-10 19:52:00