내 코드에 TimerTask가 구현되어 있습니다. 정기적으로 응용 프로그램 논리를 수정합니다. 이제 JUnit을 사용하여이 TimerTask의 영향을 테스트하고 싶습니다. TimerTask가 매 2 초마다 실행되도록 예약되었지만 Thread.sleep을 사용하지 않고 테스트 사례를 실행해야한다고 가정 해 보겠습니다.JUnit Thread.sleep을 사용하지 않고 예정된 영향 로직을 테스트하십시오.
public class LogService {
public LogService() {
configuration = ConfigurationUtil.getConfgiration();
Timer timer = new Timer(true);
timer.scheduleAtFixedRate(new ScheduledAgent(), 0, configuration.getWaitTime());
}
private List<LoggingDetails> loggingDetails;
public List<LoggingDetails> getLoggers() {
return loggingDetails;
}
class ScheduledAgent extends TimerTask {
@Override
public void run() {
// if time has taken more than wait time, then clear loggingDetails
}
}
}
하나의 단위 테스트 시나리오는 waitTime 시간 내에 loggingDetails를 얻는 것입니다. 이것은 구현하는 것이 좋습니다. 다른 시나리오는 대기 시간 후에 목록이 지워지고 null인지 테스트하고 확인해야한다는 것입니다.
우리는 여러분의 요구가 무엇인지에 대해 더 자세한 정보가 필요하다고 생각하지만, [JMockit] (http://jmockit.org)을 살펴보고 싶다면,'Thread.sleep' 나 현재 시간을 반환하는 메서드 – ajb