【发布时间】:2020-08-08 13:08:55
【问题描述】:
我正在测试一个包含 sleep 的方法。什么是停止调用 sleep() 的方法,因为它会使测试变慢??
public void fun(Integer timeToWait) {
TimeLimiter timeLimiter = new SimpleTimeLimiter();
try {
timeLimiter.callWithTimeout(() -> {
while (true) {
if (avrageIsAboveThanDesired) {
return true;
}
sleep(ofSeconds(REQUEST_STATUS_CHECK_INTERVAL));
}
}, timeToWait, TimeUnit.MINUTES, true);
} catch (UncheckedTimeoutException e) {
logger.error("Timed out waiting Instances to be in Running State", e);
} catch (WingsException e) {
throw e;
} catch (Exception e) {
throw new InvalidRequestException("Error while waiting Instaces to be in Running State", e);
}
}
【问题讨论】:
-
调用像 sleep() 这样的“低级”方法本身就是一个问题。例如,请参阅medium.com/my-random-thoughts-in-software-engineering/…。含义:不要只是去选择第一个听起来有帮助的实用程序类(如番石榴 TimeLimiter)。而是了解这些东西在做什么......
标签: java unit-testing junit mockito thread-sleep