Mockito,带有检查异常的void方法

Adi*_*mar 13 java mockito

我想知道为什么我需要处理异常,当我嘲笑一个抛出异常的void方法.

例如

public class MyObject {
    public void call() throws SomeException {
        //do something
        }
}
Run Code Online (Sandbox Code Playgroud)

现在,当我这样做时,

@Mock
MyObject myObject;

doNothing().when(myObject).call()
Run Code Online (Sandbox Code Playgroud)

它导致编译错误说

"错误:未报告的异常SomeException;必须被捕获或声明被抛出"

我想知道,为什么我需要处理该方法的异常,这本身就是被嘲笑的.

Lau*_*ntG 14

使用Java中的Mockito模拟对象时.该框架不会改变语言规范.在Java中,该throws子句在编译中定义.您无法在运行时更改声明的异常.在您的情况下,如果您调用该方法MyObject.call(),则必须处理SomeException任何普通Java代码中的as.

因为在单元测试中,你不想处理你没有测试的东西.在你的情况下,我只是重新声明throws SomeException测试方法.

  • 这仍然是2019年正确的解决方案吗? (2认同)
  • @bohemian这是我们在我的项目中正在做的事情,2019年在这里 (2认同)