Junit测试异常

检查抛出的异常有三种方式,它们各自都有优缺点:

1.@Test(expected…)

@Test注解有一个可选的参数,"expected"允许你设置一个Throwable的子类。在测试的方法前加入类似下面的句子即可验证方法抛出预期的异常:

@Test(expected = IllegalArgumentException.class)

简单明了,这个测试有一点误差,因为异常会在方法的某个位置被抛出,但不一定在特定的某行。

2.ExpectedException

如果要使用JUnit框架中的ExpectedException类,需要声明ExpectedException异常。

@Rule

public ExpectedException thrown= ExpectedException.none();

然后你可以使用更加简单的方式验证预期的异常。

        thrown.expect(异常名);

或者可以设置预期异常的属性信息。

thrown.expect(异常名);

thrown.expectMessage("属性信息");

除了可以设置异常的属性信息之外,这种方法还有一个优点,它可以更加精确的找到异常抛出的位置。

3.Try/catch with assert/fail

在JUnit4之前的版本中,使用try/catch语句块检查异常

 

@Test

public void canVote_throws_IllegalArgumentException_for_zero_age() {

Student student = new Student();

try {

student.canVote(0);

} catch (IllegalArgumentException ex) {

assertThat(ex.getMessage(), containsString("age should be +ve"));

}

fail("expected IllegalArgumentException for non +ve age");

}

尽管这种方式很老了,不过还是非常有效的。主要的缺点就是很容易忘记在catch语句块之后需要写fail()方法,如果预期异常没有抛出就会导致信息的误报。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值