のインターフェースが定義されていると仮定します
interface Foo {
int getBaz();
void doBar();
}
さらに、doBar が呼び出されるたびに baz がインクリメントされることが契約に記載されているとします。(わかりました、これは不自然なコードですが、ここに固執してください)
ここで、Foo の実装者がすべての契約条件を満たしていることを確認できるように、単体テストを提供したいと思います。
class FooTest {
protected Foo fooImpl;
@Test
public void int testBazIncrement()
{
int b = fooImpl getBaz();
fooImpl.doBar();
Assert.assertEquals( b+1, fooImpl.getBaz();
}
}
Foo の実装者がテストを利用できるようにするためのベスト プラクティスは何ですか? FooTest を呼び出し、Foo インスタンスを構築するために Foo または FooFactory を提供するためのメカニズムが必要であるように私には思えます。さらに、多くのテスト (大きなインターフェイスを考えてください) がある場合、それらすべてのテストを 1 つの FooTest クラスに入れたいと考えています。
このようなテストを実装するためのベスト プラクティスはありますか?