Quartz.net +使用SystemTime.UtcNow进行测试

时间:2013-12-04 08:49:55

标签: quartz.net

我试图通过创建作业来测试Quartz.net dll和示例代码。但我想改变系统时间并测试一些情况,例如:我正在尝试设置此SystemTime.UtcNow =()=> new DateTime(2013,11,23,58,00);在我的测试控制台应用程序创建之前,并添加了一个作业以打勾.WithCronSchedule(“0 59 23?* *”),但它没有滴答作响......不确定SystemTime是否生效。

以下示例代码:

    ISchedulerFactory sf = new StdSchedulerFactory();
    IScheduler sched = sf.GetScheduler();

    SystemTime.UtcNow = () => new DateTime(2013, 12, 04, 23, 58, 00);
    SystemTime.Now = () => new DateTime(2013, 12, 04, 23, 58, 00);

    ////TEST
    IJobDetail job = JobBuilder.Create<SimpleJob>()
        .WithIdentity("job1", "group1")
        .Build();

    ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create()
                                              .WithIdentity("trigger1", "group1")
                                              .WithCronSchedule("0 59 23 ? * *")        
                                              .Build();

1 个答案:

答案 0 :(得分:0)

您是否尝试将SystemTime设置为完全预定的时间或之后的一段时间?您的SystemTime值不会改变,如果Quartz.Net尝试检查是否应该使用该委托运行作业,那么实际上它将不是在您的测试中运行它的正确时间。