【问题标题】:How to test a code with Mockito that captures an Exception and returns false如何使用 Mockito 测试捕获异常并返回 false 的代码
【发布时间】:2016-11-10 15:54:02
【问题描述】:

我知道有几种方法可以使用 Mockito 来测试是否抛出了某个异常。但是,我的问题是我尝试测试的方法不会引发任何异常。相反,我的方法有一个 try-catch 子句,并且在 catch 子句中它只是在捕获异常后返回 false。如何测试我的方法?

boolean method() throws DataException {

    try { 
       a.do();
       return true;

    } catch(NullPointerException e) {
      /* Come down here when a is null */
      return false;
    }
}

为了给它更多的扭曲,method() 被强制抛出 DataException,因为 do() 方法抛出 DataException。

所以,我有两个问题:

  1. 我必须从我的测试代码中抛出 DataException
  2. 我必须测试 method() 以查看它是否捕获 NullPointerException 并返回 false。

编辑。是的,a 是一个模拟对象。

【问题讨论】:

  • 你班上的a 来自哪里?是注入依赖吗?
  • 模拟 a.do(); 以抛出 DE 和 NPE。 Assert method 在 NPE 上返回 false,在 DE 上抛出 DE。
  • @Compass:我非常感谢确切的语法。

标签: java mockito


【解决方案1】:

您可以模拟对象a 并抛出NullPointerException

@Test
public void itShouldReturnFalse
    when(a.do()).thenThrow(new NullPointerException());

    assertFalse(yourClass.method());
}

@Test(expected = DataException.class)
public void itShouldThrowException() {
    when(a.do()).thenThrow(new DataException());

    yourClass.method();
}

【讨论】:

  • 感谢上面的代码。我试过了,但它返回 true!
  • 你能发布你的测试课吗?
猜你喜欢
  • 2021-08-25
  • 2017-03-06
  • 2016-03-20
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 2021-05-20
  • 1970-01-01
相关资源
最近更新 更多