Java 不引发异常的模拟方法

Java 不引发异常的模拟方法,java,exception,mocking,mockito,Java,Exception,Mocking,Mockito,我有一个在特殊情况下抛出异常的方法。我想编写一个测试用例,在未引发异常时检查行为。 我在文档或示例中找不到这一点。请帮忙 例如: 但我想测试一下,根本不会抛出异常: class Validator { void validate(ValidationData dataToValidate) throws Exception { } } e、 g.我需要一些类似于: when(doSomething()).thenNotThrowException 或 要测试没有抛出异常的情况

我有一个在特殊情况下抛出异常的方法。我想编写一个测试用例,在未引发异常时检查行为。 我在文档或示例中找不到这一点。请帮忙

例如:

但我想测试一下,根本不会抛出异常:

class Validator {
    void validate(ValidationData dataToValidate) throws Exception {
    }
}
e、 g.我需要一些类似于:

when(doSomething()).thenNotThrowException


要测试没有抛出异常的情况,实际上需要做的更少:

  • 不要对
    编程,然后抛出
  • 在您的测试用例中,期望测试方法正常运行并在没有异常的情况下完成(在Junit中,对于
    @test
    ,没有任何
    期望的
    属性)

如果测试执行时没有错误,则测试通过。

默认情况下,Mockito的mock对void方法不做任何操作,因此您不需要编写任何内容

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


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

如果您只想测试测试函数中是否没有异常,那么应该使用以下注释:
@test(expected=test.None.class)

例如:

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

若验证器对象被模拟,那个么你们不需要做任何事情,若你们想验证方法抛出异常,那个么只在我应该使用mock,spy,stub的时候使用?这样的语句接受Mockito的mock和spies,我不知道stub。
when(doSomething()).thenDoNothing
@Test(expected = Test.None.class)
public void testFunction() {
    // some code
}