NUnit:testing没有预期的exception

我想创buildNUnittesting,以确保我的函数不会抛出exception。 有没有一些具体的做法,或者我应该写

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

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

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

或者只是方法

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

有关更多详细信息,请参见NUnitexception声明

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

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

这个例子来自NUnit维基 。

不抛出exception是正常的行为。 您的testing将成功validation不会引发exception。

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

你是对的。 如果有例外,那么testing将会失败。

除非你指定

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

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

 Assert.DoesNotThrow 

断言 。

我认为有一个与unit testing逻辑有关的问题。 如果您在特定input下期待特定exception,则将其声明为预期的exception。 如果你只是检查你的函数是否正常工作,并且在这个正确的行为中没有预期到exception,那么你只需要编写它,如果它抛出任何exception,你的testing就会失败。

你的代码似乎工作正常,另一方面,只有检查没有例外可能不是unit testing的正确方法。 在unit testing中,通常你会得到一些输出(期望值),你有一些实际的输出(实际值),你断言预期值和实际值是相同的。