2013-12-04 2 views
0

Я пытаюсь проверить dll Quartz.net с образцом кода, создав задания. Но я хочу изменить системное время и проверить некоторые случаи, такие как: Я пытаюсь установить этот SystemTime.UtcNow =() => новый DateTime (2013,11,23,58,00); в моем тестовом консольном приложении перед созданием, и добавил задание на отметку .WithCronSchedule («0 59 23? * *»), но его не тикают ... не уверены, вступило ли в систему SystemTime.Quartz.net + тестирование с помощью SystemTime.UtcNow

пример кода ниже:

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(); 

ответ

0

Вы пробовали настройки SystemTime в точно назначенное время или немного после этого? Значение вашего SystemTime не изменяется, и если Quartz.Net пытается проверить, должно ли задание запускаться с использованием этого делегата, на самом деле никогда не будет подходящего времени для его запуска в вашем тесте.

+0

Да, я попытался установить свой системный режим так же, как я установил его для SystemTime.UtcNow перед выполнением кода. Тем не менее это то же самое, но не срабатывание. – dav10

+0

любая подсказка об этом? – dav10

+0

SystemTime всегда будет вызывать фиксированный делегат, который вы предоставляете. Время не изменится, и работа не будет запущена, так как Quartz думает, что это 23:58 все время. Вероятно, вам стоит пересмотреть стратегию тестирования на тестирование с помощью триггеров напрямую и проверить методы GetFireTimeAfter/GetNextFireTimeUtc. –

Смежные вопросы