如何用PowerMock模拟Thread.sleep()?
示例接口和类:
public interface Machine {
void sleep(long millis);
}
public class MachineImpl
implements Machine {
private static final Logger logger = Logger.getLogger(MachineImpl.class);
@Override
public void sleep(long millis) {
try {
if (millis > 0) {
logger.trace(String.format("Try to sleep for %d millis...", millis));
Thread.sleep(millis);
}
}
catch (InterruptedException e) {
logger.trace("Full exception", e);
}
}
}
3条答案
按热度按时间56lgkhnf1#
这花了我一段时间才弄明白,所以我在回答我自己的问题。
如果您正在使用TestNG,请尝试以下操作:
在此阅读更多关于TestNG + Mockito + PowerMock的信息:https://stackoverflow.com/a/35815153/257299
dgtucam12#
这很有帮助。我最终确实使用了一些稍微不同的东西。我使用EasyMock而不是Mockito。
不需要在
@PrepareForTest
中使用Thread.class
。cgyqldqp3#
在不使用PowerMockito的情况下,为Thread.sleep(anyLongValue)编写一个 Package 器方法,并将其移到实用程序类中,使用常规Mockito API模拟Utility类方法。