広く使用されているいくつかのインターフェースのコントラクトテストを作成しようとしています。
の線に沿って:
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
。私のユースケースでは、これはデータのコレクションを含む不変のオブジェクトであり(インターフェイスごとにアクセサが指定されていますMyInterface
)、空であるか、少量のデータ、または大量のデータが含まれている可能性があります。
したがって、問題は、実装の複数のインスタンスをどのようにテストできるかということです。
現時点では、実装を初期化して、抽象コントラクトテストに合格させる必要があります。1つのアプローチは、実装ごとに複数のテストクラスを用意することです。ここで、各テストクラスは、その実装の特定のインスタンスをテストしますが、それは少し膨大で、追跡するのが難しいようです。
FWIW、私はJUnit3を使用しています。