你可以使用常规的JUnit测试实际的方法执行,但是
@Scheduled(cron = "0 * * * * *")可以使用以下命令测试你指定的方法是否正确:
@Testpublic 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 : 2019/11/06 11:41:58 FridayNext Execution date: 2019/11/09 01:00:00 Monday
由于最后一次执行(在中设置
TriggerContext)是星期五,因此下一次执行将在下一个星期一。
我对Spring api有所了解,并且找到了这个解决方案,希望它对我有所帮助。



