NUnit Assert.IsInstanceOf <t> - 无法确保不是派生类?</t>

时间:2013-07-30 21:50:57

标签: c# nunit

我有两个类: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的潜在额外推导。

1 个答案:

答案 0 :(得分:7)

当然,只需使用Assert.IsTrue

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

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