测试没有预期的exception

我想创建NUnit测试以确保我的函数不会抛出exception。 是否有一些特定的方法来做,或者我应该写

[Test] public void noExceptionTest() { testedFunction(); } 

如果没有抛出exception,它会成功吗?

 Assert.DoesNotThrow(() => { /* custom code block here*/}); 

或者只是方法

 Assert.DoesNotThrow(() => CallMymethod()); 

有关更多详细信息,请参阅NUnitexception断言

使用NUnit 3.0 约束模型类型断言代码如下所示:

Assert.That(() => SomeMethod(actual), Throws.Nothing);

此示例来自NUnit wiki 。

不抛出exception是正常的行动方式。 您的测试将成功validation是否未引发exception。

是的,没有抛出exception – >测试通过。 如果有没有重新抛出的try-catch块,它也会通过。

你是对的。 如果有exception则测试将失败。

除非你指明

 [ExpectedException( typeof(YourException) ) ] public void TestMethod() { ... } 

或者正如@sll所说,你使用的更具体

 Assert.DoesNotThrow 

断言 。

我认为存在与unit testing逻辑相关的问题。 如果您期望某些输入下的特定exception,则将其声明为预期的exception。 如果您只是检查您的函数是否正常运行并且在此正确行为期间没有预期exception,您只需编写它,如果它抛出任何exception,您的测试将失败。

您的代码似乎工作正常,另一方面,只检查没有exception可能不是unit testing的正确方法。 在unit testing中,通常您需要一些输出(预期值),您有一些实际输出(实际值),并断言预期值和实际值是相同的。