郁闷,用junit测试quartz,无法正常运行
今天由于项目需要,重温一下quartz的使用,随手copy了一下代码,来个整体的感觉:
先是job的代码:
package com; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; public class JobSchool implements Job { public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub System.out.println("go to school***"); } }
然后是测试类的代码:
@Test public void test() throws SchedulerException{ SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); JobDetail jobDetail = new JobDetail("myJob",Scheduler.DEFAULT_GROUP,job.class); SimpleTrigger trigger = new SimpleTrigger("testTrigger", Scheduler.DEFAULT_GROUP); trigger.setRepeatCount(6); trigger.setRepeatInterval(500); trigger.setStartTime(Calendar.getInstance().getTime()); sched.scheduleJob(jobDetail, trigger); }
测试结果:
很奇怪,明明设了执行六次,每次半秒间隔,但是执行结果确实让人摸不着头脑……
后来用一下的代码测试就行了:
public static void main(String[] a) throws SchedulerException{ SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); JobDetail jobDetail = new JobDetail("myJob",Scheduler.DEFAULT_GROUP,job.class); SimpleTrigger trigger = new SimpleTrigger("testTrigger", Scheduler.DEFAULT_GROUP); trigger.setRepeatCount(6); trigger.setRepeatInterval(500); trigger.setStartTime(Calendar.getInstance().getTime()); sched.scheduleJob(jobDetail, trigger); }这到底是为什么啊,浪费我大量的时间啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我也异步处理的时候碰到到这个问题,所以我在TEST方法用 SLEEP休眠一下。
junit测试在TestRunner类里开启main方法来进行对方法的测试,main方法里有System.exit();测试多线程时main线程会执行System.exist(),jvm就会结束运行,不执行其他线程
可以把当前junit的方法sleep一段时间就行了