java测试线程。在PowerMock不工作的情况下睡觉
为了简化事情,我尝试验证这个线程。在下面的方法中使用PowerMock调用sleep()
public class Sleeper {
public void sleep() throws Exception {
Thread.sleep(10);
}
}
测试班
public class SleeperTest {
// Mock setup done here to mock Sleeper instance
@Test
public void testSleep throws Exception {
PowerMockito.mockStatic(Thread.class);
sleeper.sleep();
PowerMockito.verifyStatic();
Thread.sleep(Mockito.anyLong());
}
}
我觉得这是我应该做的一切,让它工作,但我得到以下错误,当我试图运行它
Wanted but not invoked java.lang.Thread.sleep(0);
Actually, there were zero interactions with this mock.
版本
testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.6.2'
testCompile group: 'org.powermock', name: 'powermock-api-mockito', version: '1.6.6'
有趣的是,如果线程。在测试通过的测试方法中调用sleep
// This works
@Test
public void testSleep() throws Exception
{
PowerMockito.mockStatic(Thread.class);
Thread.sleep(Mockito.anyLong());
PowerMockito.verifyStatic();
Thread.sleep(Mockito.anyLong());
}
你知道我可能做错了什么吗?提前谢谢
# 1 楼答案
您是否为使用PowerMock运行静态模拟的测试类添加了注释?您应该这样注释它:
请尝试使用此设置。。。我曾尝试复制您的代码,但在PowerMock的兼容性和版本控制方面遇到了很多问题,于是放弃了。事实上,您应该避免编写静态方法,这些方法在测试时需要模拟。您应该编写它,使它不依赖于程序的状态