Testing Quartz CronTrigger trigger
java, quartz-scheduler, spring, unit-testing
Solution
Well firstly, there's no point in testing `CronTriggerBean` itself. It's part of the spring framework, and has already been tested.
A better test might be to test that your cron expression is what you expect. One option here is to use Quartz's `CronExpression` class. Given a `CronExpression` object, you can call `getNextValidTimeAfter(Date)`, which returns the next time after the given Date when the expression will fire.
Problem
Assuming that I have a `CronTriggerBean` similar to ``` <bean id="midMonthCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="reminderJobDetail" /> <property name="cronExpression" value="0 0 6 15W * ?" /> </bean> ``` What is the best way to test that this bean will actually trigger at its specified date, i.e. on the weekday closest to the 15th of each month at 6 AM? Update: This is supposed to be an unit test, so I'm not going to fire up a VM or change the system time.