关于java:Mockito测试一个void方法抛出一个异常

Mockito test a void method throws an exception

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

The method when(T) in the type Stubber is not applicable for the arguments (void)

我有什么想法可以让这个方法抛出一个指定的异常吗?

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


括号的位置不正确。你必须使用

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

而不是

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

这在文档中有解释


如果您想知道如何使用Mockito的新BDD样式:

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

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

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