1

我有两个类:Foo 和 FooBar。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.
}

有什么办法可以重写第二个测试以遵循“每个测试一个断言”的范式?最好,我还希望进行测试来解释 Foo 或 FooBar 的潜在附加派生。

4

1 回答 1

7

当然,只需使用Assert.IsTrue

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

不要觉得您只能从 NUnit 的各种“帮助”方法中进行选择。

于 2013-07-30T21:54:00.980 回答