Spring предлагает возможность планировать и выполнять задачи с определенными интервалами с помощью аннотаций, например. @Scheduled
Есть ли удобный способ для unit test этого поведения?
Конечно, я мог бы сам вызвать метод bean, но хочу, чтобы у меня не возникало проблем, таких как несколько исполнений из-за неправильной настройки и т.д.
Другие фреймворки предлагают возможность быстро переправить время самостоятельно. Одним из примеров является Activiti, где вы можете позвонить
org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)
чтобы ускорить время, используемое каркасом.
Есть ли что-то сопоставимое в Spring?
По сути, я хочу сделать что-то вроде этого в unit test (запустите с помощью SpringJUnit4ClassRunner
)
@Test public void testTaskScheduling() {
assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIinitiallyExpect)));
SpringClockUtil.setDate(dateInTwoHours)// This is what I am missing
SpringTaskExecutor.executeAllScheduledTasks() // Also missing
assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIexpectNow)));
}