测试 Spring 每年安排一次作业的计划程序

Testing Spring Scheduler For Job Scheduled Once A Year

我在网上找不到任何不涉及 "run this every 5 seconds" 或类似时间间隔的示例,但即将到来的工作需求表明我们将 运行 这些工作的时间更长帧。是否有构建测试的框架或方法来验证作业仅每年调用一次,每月一次等,或者只是试图测试 Spring?

您应该测试您的代码(预定作业实施)。

支持 @Scheduled 注释的代码是在您的应用程序外部实现的,因此您应该将其视为第三方(在本例中为 spring)。无需测试它是否有效,spring 开发人员已经为您测试过它。

因此,总的来说,您应该只测试项目的代码。

现在,话虽如此,有一些方法可以在集成测试中检查 @Sheduled 代码(参见 this tutorial

关于调度你应该知道的一件事是它可能需要一些时间来模拟这个并且一般来说,让测试必须等待一段时间才能触发代码不是一个好主意,因为随着像这样的测试你可能会得到永远运行的测试套件:)