PowerMock之Checked exception is invalid for this method

背景

在调用第三方RPC接口时,该接口未声明异常,但可能由于网络或者其他原因导致运行异常,故手工增加了try…catch…来进行异常处理。

故在使用PowerMock进行单元测试时,需要对这个未声明异常的方法进行Mock抛出异常。

开始代码如下:

1
PowerMockito.when(rpcService.invoke(aaa)).thenThrow(new Exception())

结果运行的时候提示如下错误:

1
Checked exception is invalid for this method!

解决办法

该提示其实是告诉我们必须抛出一个特定的异常,而不能直接抛出Exception异常。

所以直接将抛出的异常改成RuntimeException即可。

1
PowerMockito.when(rpcService.invoke(aaa)).thenThrow(new RuntimeException())