我正在使用Junit 4和Mockito,并且我想为方法调用设置存根,以便它抛出异常:
doThrow(MyException.class).when(myObject).foo();
问题在于,MyException 是一个已检查的异常,所以这个语句中对 foo() 的调用会导致编译器抱怨我必须要么处理异常,要么在我的方法中添加 throws 子句。
所以我想知道处理这种情况的正确方式是什么? 我目前的想法是:
- 我使用的方法不对,有更好的方法。
- 只需在测试方法中添加 throws MyException
- 将调用提取到另一个仅吞噬异常的方法中
private void givenFooThrowsAnException(MyObject myObject) {
try {
doThrow(MyException.class).when(myObject).foo();
} catch (MyException e) {
// Required to stub a checked exception
}
}
throws MyException
子句,并让JUnit在引发异常时使测试失败。 - JB Nizet