Springは、アノテーションを使用して特定の間隔でタスクをスケジュールし実行する可能性を提供します。 @Scheduled
春にスケジュールされた@
この動作を単体テストする便利な方法はありますか?
もちろん私は豆のメソッドを自分で呼び出すことができますが、私はmultiple executions due to misconfigurationのような問題に遭遇しないようにしたいと思います。
他のフレームワークでは、自分自身で早送りすることができます。 1つの例はActivitiであり、フレームワークで使用された時間を早送りするには
org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)
とすることができます。
Springに匹敵するものはありますか?
は基本的に私は何をしたい、直接Beanを呼び出すことにより、ユニットテストでは、このような何か(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)));
}