我有两个类:Foo和FooBar.FooBar来自Foo.我有一个工厂类,给定参数,决定实例化和返回哪个对象.
所以我希望有单元测试来验证我的工厂类是否正常工作并返回正确的实例.
对于FooBar来说这有点干净:
[Test]
public void FooBarFactoryTest()
{
var testObj = FooFactory(paramsForFooBarOnly);
Assert.IsInstanceOf<FooBar>(testObj);
}
Run Code Online (Sandbox Code Playgroud)
但对于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.
}
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以重新编写第二个测试来遵循"每次测试一个断言?"的范例.优选地,我还希望进行测试以解释Foo或FooBar的潜在额外推导.
当然,只需使用Assert.IsTrue:
Assert.IsTrue(testObj.GetType() == typeof(Foo));
Run Code Online (Sandbox Code Playgroud)
不要觉得你只能从NUnit的各种"帮助"方法中选择.