【发布时间】:2013-10-20 08:02:51
【问题描述】:
我想知道为什么我需要处理异常,当我在模拟一个抛出异常的 void 方法时。
例如
public class MyObject {
public void call() throws SomeException {
//do something
}
}
现在当我这样做的时候,
@Mock
MyObject myObject;
doNothing().when(myObject).call()
导致编译错误提示
“错误:未报告的异常 SomeException;必须被捕获或声明为抛出”
我想知道,为什么我需要为该方法处理异常,该方法本身就被嘲笑了。
【问题讨论】:
-
你不需要处理它。只需将
throws Exception放在您的测试方法上。我习惯用throws Exception标记我所有的 JUnit 方法 - 没有理由不这样做。 -
@DawoodibnKareem 当我想表明测试应该抛出异常时,我使用断言助手,例如
@Test(expected = ...)。我尽量避免在测试方法签名中使用throws子句,因为它没有关于测试本身的任何有用信息。