测试Quartz CronTrigger触发器

Rob*_*anu 13 java spring unit-testing quartz-scheduler

假设我有CronTriggerBean类似的

<bean id="midMonthCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="reminderJobDetail" />
    <property name="cronExpression" value="0 0 6 15W * ?" />
</bean>
Run Code Online (Sandbox Code Playgroud)

测试这个bean实际上会在指定日期触发的最佳方法是什么,在每个月的15号最接近的工作日上午6点?


更新:这应该是一个单元测试,所以我不会启动VM或更改系统时间.

ska*_*man 17

首先,测试CronTriggerBean本身没有意义.它是弹簧框架的一部分,并且已经过测试.

更好的测试可能是测试您的cron表达式是否符合预期.这里的一个选择是使用Quartz的CronExpression类.给定一个CronExpression对象,您可以调用getNextValidTimeAfter(Date),在表达式将触发的给定日期之后的下一次返回.


小智 7

我只使用CronMaker来确定我的cron表达是否形成良好,请查看:http://www.cronmaker.com/