Можно ли передать фальшивые часы на запланированное задание весной? - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь протестировать метод по расписанию, который запускается один раз в день. Вот xml часть

<task:annotation-driven executor="myExecutor" scheduler="myScheduler"/>
<task:scheduler id="myScheduler" pool-size="10" />
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="refillingServiceImpl" method="refill"
                    cron="0 0 21 * * *" />
</task:scheduled-tasks>
<task:executor id="myExecutor" pool-size="5"/>

Метод работает, как ожидалось, в указанное время в соответствии с моим системным временем. Но все незапланированные методы, которые работают с датой / временем в приложении, используют общий экземпляр Clock, и когда я хочу установить определенное c время для теста - я просто меняю этот экземпляр Clock. Перед тестом я устанавливаю Часы на 20: 59: 50

//June 18, 2020 20:59:50 Local Time (Kiev, GMT +3), Thursday
    long offset = 1592503190 - Instant.now().getEpochSecond();
    TimeUtil.setClock(Clock.offset(Clock.system(TimeUtil.getDefaultZoneId()), Duration.ofSeconds(offset)));

, но я не знаю, как сказать, что планировщик использует эти часы, но не систему. Возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...