我正在尝试模拟静态方法 Thread.sleep(1); 调用时返回 InterruptedException。我发现了一个似乎可以解决我的问题的 SO question,但是在将我的代码设置为与该问题的答案相同之后,它仍然无法正常工作。
我发现的 SO 问题是:How to mock a void static method to throw exception with Powermock?
这是我正在尝试测试的方法的片段:
try {
Thread.sleep(1);
} catch (InterruptedException ie) {
LOGGER.error("failure to sleep thread for 1 millisecond when persisting
checkpoint. exception is: " + ie.getMessage());
}
这是我的测试类的一个片段,它显示了我尝试模拟 Thread.sleep(1) 来做我想做的事:
@RunWith(PowerMockRunner.class)
@PrepareForTest(Thread.class)
public class TestCheckpointDaoNoSQL {
@Test
public void test() throws InterruptedException {
PowerMockito.mockStatic(Thread.class);
PowerMockito.doThrow(new InterruptedException()).when(Thread.class);
Thread.sleep(1);
}
}
我还尝试模拟 InterruptedException 来抛出而不是创建一个新异常,但这并没有帮助。我可以说没有抛出异常,因为 ECLEMMA 没有显示该部分方法的代码覆盖率,并且我通过该方法进行调试以验证标语永远不会被击中。
感谢您查看我的问题!