Spring offre la possibilità di pianificare ed eseguire attività a intervalli specifici utilizzando annotazioni, ad es. @Scheduled
Test @ programmato in primavera
C'è un modo conveniente per testare questo comportamento?
Ovviamente potrei chiamare il metodo del bean da solo, ma voglio essere sicuro di non incorrere in problemi come multiple executions due to misconfiguration e così via.
Altre strutture offrono la possibilità di far avanzare rapidamente il tempo da soli. Un esempio è Activiti dove è possibile chiamare
org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)
per far avanzare rapidamente il tempo utilizzato dal framework.
C'è qualcosa di simile in primavera?
Essenzialmente quello che voglio fare è qualcosa di simile a una prova di unità (di esecuzione utilizzando 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)));
}