1

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 の派生の可能性を説明するテストも必要です。

4

1 に答える 1

7

もちろん、次を使用してAssert.IsTrueください:

Assert.IsTrue(testObj.GetType() == typeof(Foo));

NUnit のさまざまな「ヘルパー」メソッドだけを選択する必要があるとは思わないでください。

于 2013-07-30T21:54:00.980 に答える