您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Testing @Scheduled in spring

Testing @Scheduled in spring

你可以使用常规的JUnit测试实际的方法执行,但是@Scheduled(cron = "0 * * * * *")可以使用以下命令测试你指定的方法是否正确:

@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 : 2019/11/06 11:41:58 Friday

Next Execution date: 2019/11/09 01:00:00 Monday

由于最后一次执行(在中设置TriggerContext)是星期五,因此下一次执行将在下一个星期一。

我对Spring api有所了解,并且找到了这个解决方案,希望它对我有所帮助。

Java 2022/1/1 18:19:43 有379人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶