如何使用Mockito测试代码来捕获异常并返回false

时间:2016-11-10 15:54:02

标签: java mockito

我知道有几种方法可以使用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;
    }
}

为了给它一点点扭曲,因为do()方法抛出DataException,所以方法()被强制抛出DataException。

所以,我有两个问题:

  1. 我必须从我的测试代码中抛出DataException
  2. 我必须测试method()以查看它是否捕获NullPointerException并返回false。
  3. 编辑。是的, a 是一个模拟对象。

1 个答案:

答案 0 :(得分:2)

您可以模拟对象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();
}