java如何mock一个方法并返回异常

java如何mock一个方法并返回异常

作者:Elara发布时间:2026-02-11阅读时长:0 分钟阅读次数:6

用户关注问题

Q
如何使用Java模拟方法抛出异常?

我想在单元测试中模拟某个方法抛出异常,该如何实现?

A

使用Mockito模拟方法抛出异常

在Java的单元测试中,Mockito是一个常用的mock框架。你可以使用Mockito的when().thenThrow()方法来模拟方法抛出特定异常。例如:

when(mockedObject.someMethod()).thenThrow(new RuntimeException("异常信息"));

这样,当调用someMethod()时,就会抛出RuntimeException。

Q
如何在JUnit测试中验证被mock方法抛出的异常?

我使用mock框架模拟方法抛出异常,想知道如何在JUnit中断言是否正确抛出了该异常?

A

利用JUnit的assertThrows来断言异常

在JUnit 5中,可以通过assertThrows方法断言方法调用是否抛出指定异常:

assertThrows(RuntimeException.class, () -> {
    mockedObject.someMethod();
});

如果someMethod()抛出了RuntimeException,则测试通过,否则失败。

Q
Mockito中如何模拟带参数方法抛异常?

我想mock一个带有参数的方法,并让它在特定参数时抛异常,该怎么配置?

A

结合参数匹配器来模拟异常抛出

你可以通过Mockito的参数匹配器来模拟带参数的方法在特定入参时抛出异常。例如:

when(mockedObject.someMethod(eq("badParam"))).thenThrow(new IllegalArgumentException("非法参数"));

这样,当调用someMethod("badParam")时,会抛出IllegalArgumentException。