您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
Junit测试预期异常
作者:网络转载 发布时间:[ 2014/9/30 13:48:48 ] 推荐标签:Junit 测试 开源软件测试

  除了可以设置异常的属性信息之外,这种方法还有一个优点,它可以更加精确的找到异常抛出的位置。在上面的例子中,在构造函数中抛出的未预期的(unexpected) IllegalArgumentException 异常将会引起测试失败,我们希望它在canVote()方法中抛出。
  从另一个方面来说,如果不需要声明更好了
  @Rule
  public ExpectedException thrown= ExpectedException.none();
  它像不需要的噪音一样,如果这样很好了
  expect(RuntimeException.class)
  或者:
  expect(RuntimeException.class, “Expected exception message”)
  或者至少可以将异常和信息当做参数传进去
  thrown.expect(IllegalArgumentException.class, “age should be +ve”);
  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()方法,如果预期异常没有抛出会导致信息的误报。我曾经犯过这样的错误。
  总之,这三种方法都可以测试预期抛出的异常,各有优缺点。对于我个人而言,我会选择第二种方法,因为它可以非常精确、高效的测试异常信息。

上一页12下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd