模拟方法不引发异常

时间:2018-09-26 07:46:14

标签: java exception mocking mockito

我有在特殊情况下会引发异常的方法。我想编写一个测试用例,当不引发异常时将检查行为。 我在文档或示例中找不到此内容。请帮忙。

例如:

when(validator.validate(any(ValidationData.class))).thenThrow(new ValidationException());

但是我想测试一下根本不会引发异常:

class Validator {
    void validate(ValidationData dataToValidate) throws Exception {
    }
}

例如我需要类似的东西:

when(doSomething()).thenNotThrowException

when(doSomething()).thenDoNothing

3 个答案:

答案 0 :(得分:1)

默认情况下,Mockito的模拟对void方法不执行任何操作,因此您无需编写任何内容。

如果您想明确地执行此操作,请尝试以下操作:

doNothing().when( validator ).validate( any() );

答案 1 :(得分:0)

要测试没有引发异常的情况,实际上您需要做的更少:

  • 完全编程thenThrow
  • 在您的测试用例中,希望测试方法能够正常运行并且完整无异常(在Junit中,expected没有任何@Test属性)

如果执行测试没有错误,则您的测试通过了。

答案 2 :(得分:0)

如果只想测试测试函数中没有异常,则应使用以下注释:@Test(expected = Test.None.class)

示例:

@Test(expected = Test.None.class)
public void testFunction() {
    // some code
}