如何测试Spring @Scheduled
我如何测试我的spring-boot应用程序的Scheduled / cron作业任务?
package com.myco.tasks;
public class MyTask {
@Scheduled(fixedRate=1000)
public void work() {
// task execution logic
}
}
这通常很难。 您可能会考虑在测试期间加载Spring上下文,并从中伪造一些bean来验证调度的调用。
我在Github回购中有这样的例子。 有一个简单的计划例子,用上述方法测试。
如果我们假设您的作业运行时间很短,您确实希望测试等待作业执行,并且您只想测试作业是否被调用,则可以使用以下解决方案:
将等待性添加到类路径中:
<dependency>
<groupId>org.awaitility</groupId>
<artifactId>awaitility</artifactId>
<version>3.1.0</version>
<scope>test</scope>
</dependency>
写测试类似于:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {
@SpyBean
private MyTask myTask;
@Test
public void jobRuns() {
await().atMost(Duration.FIVE_SECONDS)
.untilAsserted(() -> verify(myTask, times(1)).work());
}
}
链接地址: http://www.djcxy.com/p/28579.html
上一篇: How to test Spring @Scheduled
下一篇: Instantiation time for mutable default arguments of closures in Python