Test du déclencheur Quartz CronTrigger
En supposant que j'ai un CronTriggerBean
similaire à
<bean id="midMonthCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="reminderJobDetail" />
<property name="cronExpression" value="0 0 6 15W * ?" />
</bean>
Quelle est la meilleure façon de tester que ce bean déclencher à sa date spécifiée, c'est à dire sur le jour de la semaine le plus proche du 15 de chaque mois, à 6 heures du matin?
Mise à jour: C'est censé être une unité de test, donc je ne vais pas le feu jusqu'à une VM ou modifier l'heure du système.
source d'informationauteur Robert Munteanu | 2009-06-29
Vous devez vous connecter pour publier un commentaire.
Eh bien tout d'abord, il n'y a pas de point de tests de
CronTriggerBean
lui-même. Il fait partie du framework spring, et a déjà été testé.Un meilleur test pour vérifier que votre expression cron est ce que vous attendez. Une option est d'utiliser le Quartz est
CronExpression
classe. Étant donné unCronExpression
objet, vous pouvez appelergetNextValidTimeAfter(Date)
qui retourne la prochaine fois après la Date à laquelle l'expression de la volonté du feu.J'ai utilisé CronMaker seulement être sûr que si mon expression cron est bien formé, check it out:
http://www.cronmaker.com/
Pour ceux qui n'utilisent pas le planificateur Quartz, mais au lieu d'utiliser la
TaskSchedular
directement:Vous pouvez également obtenir le déclencheur de haricot de printemps et d'invoquer la
getFireTimeAfter
méthode à la fin.J'ai trouvé un cool documentation sur l'évaluation de la
CronExpression
:http://www.nurkiewicz.com/2012/10/testing-quartz-cron-expressions.html
Le C# de la mise en œuvre sera quelque chose comme ceci:
C'est une démo fraîche. Mais à la fin, je finis à l'aide de Calendrier Simple.
Parce que c'est exécutée immédiatement et ensuite tous les x temps.