在用mockito来模拟异常的时候,当要抛出自定义的异常,而非RuntimeException等自定义异常时,常常会出现如下错误信息:
Checked
exception is invalid for this method!
以前我可以通过doThrow(CheckedException.class).when(service).show(anyObject),来绕过这个错误。但是当抛出的异常要携带某些信息时,就不能不给异常传参了,于是就得这么写:
doThrow(new CheckedException("error")).when(service).show(anyObject)
接着,你会看到编译通过,但运行时报上面的异常
我们来看下上面异常的意思,大概是说检查到这个异常对这个方法无效。检查了这个方法后,发现这个方法并没有显示声明或抛出这个我们自定义的异常。试着在他的方法名后加上
throw CheckedException,问题解决。
总结:看来只有方法中明确抛出的异常,mockito才会认为是合理的。虽然不是很明白mockito为什么要管我们抛出的异常类型,先就这么办吧
本文探讨了使用Mockito模拟自定义异常的正确方法,尤其是在需要传递参数时的常见错误及解决方案。介绍了如何确保方法签名中声明抛出异常,以避免运行时错误。
457

被折叠的 条评论
为什么被折叠?



