Foo と FooBar の 2 つのクラスがあります。FooBar は Foo から派生します。パラメータを指定して、インスタンス化して返すオブジェクトを決定するファクトリ クラスがあります。
したがって、ファクトリ クラスが適切に動作し、適切なインスタンスを返すことを確認する単体テストが必要です。
これは FooBar にとっていくらかクリーンです。
[Test]
public void FooBarFactoryTest()
{
var testObj = FooFactory(paramsForFooBarOnly);
Assert.IsInstanceOf<FooBar>(testObj);
}
しかし、Foo の場合、かなり厄介です。
[Test]
public void FooFactoryTest()
{
var testObj = FooFactory(paramsForFooOnly);
Assert.IsInstanceOf<Foo>(testObj); //An instance of FooBar would pass this assert
Assert.IsNotInstanceOf<FooBar>(testObj); //Can't have just this assert.
}
この 2 番目のテストを書き直して、「テストごとに 1 つのアサート」というパラダイムに従う方法はありますか? できれば、Foo または FooBar の派生の可能性を説明するテストも必要です。