gpt4 book ai didi

c# - NUnit Assert.IsInstanceOf - 无法确保不是派生类?

转载 作者:太空宇宙 更新时间:2023-11-03 18:34:09 24 4
gpt4 key购买 nike

我有两个类: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 的潜在其他派生的测试。

最佳答案

当然,只需使用Assert.IsTrue:

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

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

关于c# - NUnit Assert.IsInstanceOf<T> - 无法确保不是派生类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958089/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com