测试异常
时间:2020-01-09 10:35:38 来源:igfitidea点击:
有时,我们可能需要测试在给定无效输入或者在无效状态下执行时,代码是否抛出了正确的异常。有两种方法可以做到这一点。
表示预期测试方法会导致引发异常的第一种方法是,将" expected"属性添加到" @Test"注释中,如下所示:
@Test(expected = IllegalArgumentException.class)
public void testForExceptions1() {
MyUnit myUnit = new MyUnit();
myUnit.throwIllegalArgumentException();
}
注意" expected"属性是如何设置为" IllegalArgumentException.class"的。这向测试运行程序发出信号,表示它在执行此测试方法时会抛出" IllegalArgumentException"。如果没有抛出" IllegalArgumentException",则测试失败。
第二种方法是将我们希望引发异常的代码包装在try-catch块中,如下所示:
@Test
public void testForExceptions2() {
MyUnit myUnit = new MyUnit();
try{
myUnit.throwIllegalArgumentException();
fail("expected IllegalArgumentException");
} catch(IllegalArgumentException e){
//ignore, this exception is expected.
}
注意,在调用myUnit.throwIllegalArgumentException()之后,调用了fail()方法。如果throwIllegalArgumentException()方法返回normall,则将执行此fail()调用,从而导致测试失败。
相应地,如果throwIllegalArgumentException()方法抛出预期的IllegalArgumentException,它将被捕获并被忽略。测试继续。
我们要使用两种方法中的哪一种取决于我们。当然,如果我们需要在同一测试方法中测试多个异常,则第一种方法将行不通。请记住,第一种方法会在引发预期的异常时中止测试方法。然后,我们将不得不使用第二种方法来测试异常,在该方法中,当引发预期的异常时,测试方法将继续。

