加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – JUnit4预期异常

发布时间:2020-12-15 04:08:12 所属栏目:Java 来源:网络整理
导读:我正在使用JUnit4为项目进行场景测试. 在其中一个测试中,我需要检查预期的异常.使用JUnit4,我使用注释完成此操作. @Test(expected=...) 现在的问题是,在测试中抛出异常的代码下面还有一些我需要检查的其他注释哪些不会被激活.举个例子: @Test(expected=Null
我正在使用JUnit4为项目进行场景测试.

在其中一个测试中,我需要检查预期的异常.使用JUnit4,我使用注释完成此操作.

@Test(expected=...)

现在的问题是,在测试中抛出异常的代码下面还有一些我需要检查的其他注释哪些不会被激活.举个例子:

@Test(expected=NullPointerException.class)
     public void nullPointerTest() {
         Object o = null;
         o.toString();
         assertTrue(false);
     }

这个测试通过是因为它获得了nullpointerexception,但是asserTrue(false)显然存在断言错误,因此我希望它失败.

解决这个问题的最佳方法是什么?对此的解决方案可能如下,但我不知道这是否是正确的方法.

@Test
public void nullPointerTest2() {
    boolean caught = false;
    try{
        Object o = null;
        o.toString();
    }
    catch(NullPointerException e)
    {
        caught = true;
    }
    assertTrue(caught);
    assertTrue(false);
}

第二次测试失败了.

解决方法

考虑:

@Test(expected=NullPointerException.class)
public void nullPointerTest2() {
  boolean caught = false;
  try{
     Object o = null;
     o.toString();
  }
  catch(NullPointerException e)
  {
    // test other stuff here
     throw e;
  }
}

这允许进行额外的检查,同时仍然充分利用JUnit的内置异常检查.

此外,我认为使用@Rule ExpectedException是一个更好的选择,在许多情况下是预期的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读