测试异常
时间: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
,它将被捕获并被忽略。测试继续。
我们要使用两种方法中的哪一种取决于我们。当然,如果我们需要在同一测试方法中测试多个异常,则第一种方法将行不通。请记住,第一种方法会在引发预期的异常时中止测试方法。然后,我们将不得不使用第二种方法来测试异常,在该方法中,当引发预期的异常时,测试方法将继续。