时才有可能
我使用此结构:
try {
Mockito.when(rules1.onEvent(Mockito.<OnEventArgs>any(), Mockito.<Response>any())).thenReturn(true);
} catch (MalformedEventException e) {
Assert.fail();
}
用于模拟此接口:
public interface Rules {
boolean onEvent(OnEventArgs onEventArgs, Response response) throws MalformedEventException;
}
但是,我不明白为什么在测试中使用Mockito#时必须捕获异常?绝对不应该在模拟的"声明"中抛出例外情况,对吗?那么,为什么我必须在那里处理呢?...我应该如何处理?assert.fail()?
Mockito构建一个代理,必须满足模拟类方法的签名。抛出的例外是此签名的一部分。您可以通过向测试方法宣布throws Exception
来省略尝试/捕获。
当然,模拟物体的例外通常不会被抛弃。仅当您使用thenCallRealMethod()
。
您不需要捕获异常:
import static org.mockito.Matchers.isA;
import static org.mockito.Mockito.when;
...
@Test
public void something() throws Exception {
when(rules1.onEvent(isA(OnEventArgs.class), isA(Response.class)).thenReturn(true);
...
}
如果测试引发任何例外,Junit将报告失败。