我正在尝试为一些广泛使用的接口编写合约测试:
沿着:
public abstract class MyInterfaceContractTest extends TestCase {
private MyInterface _toTest;
public void setUp(){
_toTest = getTestableImplementation();
}
protected abstract MyInterface getTestableImplementation();
public void testContract(){
}
}
...和...
public class MyInterfaceImplementationTest extends MyInterfaceContractTest {
protected MyInterface getTestableImplementation(){
return new MyInterfaceImplementation(...);
}
}
但是,我希望能够测试MyInterfaceImplementation
. 在我的用例中,这是一个包含数据集合的不可变对象(根据 interface 指定访问器MyInterface
),它可能是空的,或者有少量数据,甚至是大量数据。
所以问题是,我如何测试我的实现的多个实例?
目前,我必须初始化实现以将其传递给抽象合约测试。一种方法是为每个实现设置多个测试类,其中每个测试类测试该实现的特定实例——但这似乎有点庞大且难以跟踪。
FWIW,我正在使用 JUnit 3。