如何使用 Mockito 测试是否捕获到异常?
示例:
try{
int a = 8/0;
catch(ArithmeticException e){
Logger.error(e.getMessage());
}
最佳答案
我猜你的问题是 Logger.error() 实际上是对静态方法的调用。而“正常”的 Mokito 不允许您模拟对静态方法的调用。
因此,有两种选择:
a) 您可以求助于 PowerMokito ...,它使您能够模拟此类调用;因此你可以简单地指定:“我希望 Logger.error() 应该用这种异常对象来调用”。但请注意:PowerMockito 及其兄弟 PowerMock 需要付出一定的代价;对于许多人来说,他们制造的问题多于他们解决的问题。因此,就我个人而言,我绝对不推荐此选项。
b) 你可以退后一步,将你的设计更改为不使用静态方法,例如:
class UnderTest {
SomeLogger logger ... coming into the class via dependency injection
void foo() {
try { ... whatever
} catch(WhateverException w) {
logger.error(w....
所以,现在您正在处理一个方法调用;你可以创建一个模拟并传递它。
当然,这只有在您拥有日志记录代码时才有效。当然,这可能需要大量工作。但从长远来看,它会得到返回。
最后的建议:你可能想看那些 videos ,详细解释了“编写可测试代码”的实际含义。
关于java - 如何验证是否捕获到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38482330/