我使用JUnit4和Mockito为我的应用程序编写单元测试,我希望全面覆盖。但我不完全了解如何覆盖异常分支。 例如:
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
我如何从测试异常中调用?
答案 0 :(得分:2)
虽然您可能无法轻易地将异常插入到Thread.sleep
中,因为它是静态调用而不是针对注入的实例,因此您可以轻松地存入注入的依赖项以在调用时抛出异常:
@Test
public void shouldHandleException() throws Exception {
// Use "thenThrow" for the standard "when" syntax.
when(dependency.someMethod()).thenThrow(new IllegalArgumentException());
// Void methods can't use "when" and need the Yoda syntax instead.
doThrow(new IllegalArgumentException()).when(dependency).someVoidMethod();
SystemUnderTest system = new SystemUnderTest(dependency);
// ...
}