C# 使用NUnit测试void函数的模式是什么?

C# 使用NUnit测试void函数的模式是什么?,c#,testing,nunit,assert,assertions,C#,Testing,Nunit,Assert,Assertions,我想为一个void方法添加一个测试,并取得了以下成果: [Test] public void TestDuckbilledPlatypusInterface() { var dbPlatypus = IOC.container.Resolve<IDuckbilledPlatypus>(); dbPlatypus.InsertIntoPoisonousFoot(HttpWebRequest httpwebreq); Assert.? <= assert

我想为一个void方法添加一个测试,并取得了以下成果:

[Test]
public void TestDuckbilledPlatypusInterface()
{
    var dbPlatypus = IOC.container.Resolve<IDuckbilledPlatypus>();

    dbPlatypus.InsertIntoPoisonousFoot(HttpWebRequest httpwebreq);

    Assert.? <= assert what? or what?
}

在这种情况下,我可以断言什么——只是它运行时没有抛出异常?如果是这样的话,收到的方法是什么?

测试无异常抛出是有一定价值的,但我也会尝试测试void方法可能产生的副作用。属性集等


如果这是一个存储库方法,那么实际上编写一个集成测试可能更有价值,而不是测试是否将正确的行插入到数据库中。

测试是否引发异常有一定的价值,但我也会尝试测试void方法可能产生的副作用。属性集等

如果这是一个存储库方法,那么实际上编写一个集成测试可能更有价值,您可以在其中测试是否将正确的行插入到数据库中。

正如关于您的问题的评论中所建议的,您可以指示NUnit断言在调用您的方法时不会引发异常:

:

var myObj=新的MyClass; Assert.That=>myObj.VoidMethod,抛出.Nothing; 或者,通过:

Assert.DoesNotThrow=>myObj.VoidMethod; 而且,正如posted by中所建议的,您还可以检查对象状态的更改,和/或测试底层资源(如数据库)的更改

然而,在我的情况下,这是不适用的,因为我的无效方法只是检查测试对象是否可以验证:

Assert.That=>myObj.ValidateAndThrow,抛出.Nothing; 如果无效,则对象抛出时附带一个或多个解释,最终由web服务作为响应返回。

如对您的问题的评论中所建议的,您可以指示NUnit断言在调用方法时不会抛出异常:

:

var myObj=新的MyClass; Assert.That=>myObj.VoidMethod,抛出.Nothing; 或者,通过:

Assert.DoesNotThrow=>myObj.VoidMethod; 而且,正如posted by中所建议的,您还可以检查对象状态的更改,和/或测试底层资源(如数据库)的更改

然而,在我的情况下,这是不适用的,因为我的无效方法只是检查测试对象是否可以验证:

Assert.That=>myObj.ValidateAndThrow,抛出.Nothing;
如果无效,对象将抛出一个或多个解释,最终由web服务作为响应返回。

@TGH的答案是一个更好的主意,但要测试NUnit中是否抛出异常,可以使用Assert.that=>someVoid,throws.Nothing或Assert.DoesNotThrow=>somevoidItem谢谢,这是有效的:Assert.that=>DeliveryItem,什么都没有;no@TGH的答案是一个更好的主意,但要测试NUnit中是否没有抛出异常,可以使用Assert.that=>someVoid,Throws.Nothing或Assert.DoesNotThrow=>somevoidThank,这是有效的:Assert.that=>DeliveryItem,Throws.Nothing;不