Mockito 测试 void 方法引发异常

2022-08-31 04:20:15

我有一个返回类型的方法。它还可以引发许多异常,因此我想测试那些抛出的异常。所有尝试都失败,原因相同:void

Stubber 类型中的方法 when(T) 不适用于参数 (void)

任何想法,我可以获得方法来抛出一个指定的异常?

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));

答案 1

括号位置不当。

您需要使用:

doThrow(new Exception()).when(mockedObject).methodReturningVoid(...);
                                          ^

并且不使用

doThrow(new Exception()).when(mockedObject.methodReturningVoid(...));
                                                                   ^

这在文档中进行了说明


答案 2

如果您曾经想过如何使用Mockito的新BDD风格来做到这一点:

willThrow(new Exception()).given(mockedObject).methodReturningVoid(...));

为了将来的参考,人们可能需要抛出异常,然后什么都不做:

willThrow(new Exception()).willDoNothing().given(mockedObject).methodReturningVoid(...));