例如下面的代码,
[Test()]
public void Test( )
{
try{
GetNumber( );
}
catch( Exception ex ){
/* fail here */
}
...
}
当GetNumber方法抛出异常时,我想失败我的测试。
请告知。
非常感谢。
答案 0 :(得分:22)
您不需要在try / catch中包装GetNumber()。如果GetNumber()抛出,您的测试将失败。
如果您需要明确地将其失败,请使用Assert.Fail();
答案 1 :(得分:3)
如果GetNumber()
返回一个值,则不应该执行您要执行的操作。相反,您应该断言返回值。如果您不希望出现异常,请不要费心检查异常。 NUnit框架会处理这个问题并且无法为您进行测试。
如果GetNumber()
没有返回值,您可以执行以下三项操作之一:
在这种情况下,第一个选项是最明确的。如果您可以验证的唯一有趣的副作用是抛出异常,这是很常见的。但是如果GetNumber()
没有返回值,你应该考虑重命名你的方法:)
答案 2 :(得分:1)
所有测试都应该通过,如果您期望异常,则应使用ExpectedException属性。如果您的代码抛出预期的异常测试将通过。
答案 3 :(得分:1)
Assert.Fail()
:http://www.nunit.org/index.php?p=utilityAsserts&r=2.2.7
虽然,Assert.NoThrow可能有一个断言,或类似的东西,可以确保你的方法不会抛出。
答案 4 :(得分:0)
[Test()]
public void Test( )
{
GetNumber();
}
测试失败相当于从中抛出异常。因此,如果您的方法抛出,则测试将失败。