您可以使用常规JUnit测试实际的方法执行,但是要测试您指定的TriggerContext是否正确,可以使用:
@Test
public void testScheduler(){
// to test if a cron expression runs only from Monday to Friday
org.springframework.scheduling.support.CronTrigger trigger =
new CronTrigger("0 0 1 * * MON-FRI");
Calendar today = Calendar.getInstance();
today.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss EEEE");
final Date yesterday = today.getTime();
log.info("Yesterday was : " + df.format(yesterday));
Date nextExecutionTime = trigger.nextExecutionTime(
new TriggerContext() {
@Override
public Date lastScheduledExecutionTime() {
return yesterday;
}
@Override
public Date lastActualExecutionTime() {
return yesterday;
}
@Override
public Date lastCompletionTime() {
return yesterday;
}
});
String message = "Next Execution date: " + df.format(nextExecutionTime);
log.info(message);
}
这是输出:
Yesterday was : 2015/11/06 11:41:58 Friday
Next Execution date: 2015/11/09 01:00:00 Monday
由于上次执行(在TriggerContext中设置)是星期五,因此下一次执行将在下周一。
我对Spring api有所了解,并且找到了这个解决方案,希望它对我有所帮助。