【发布时间】:2011-09-10 04:16:39
【问题描述】:
我们正在构建一个包含大量预定处理的财务应用程序。我们希望简化应用程序的手动测试,但由于大多数过程需要数月才能完成,因此我们需要为测试人员提供将当前日期提前的选项。
为我们所有的业务服务伪造当前日期不是问题,因为它们都通过“TimeService”间接访问日期。我们遇到的问题是调度程序(Quartz)。不可能将调度程序的当前日期移动到未来(也不是过去,但这没有多大意义)。我知道在调度程序运行时弄乱调度程序的当前时间可能不是最好的主意,但是如果您可以使用相对于当前日期的偏移时间间隔来启动调度程序,那么应该没有逻辑问题 - Quartz 应该会发现所有错过的执行并根据配置的失火指令处理它们。
所以在这个一般设计问题上更具体一点:
- Quartz 是否可以伪造当前日期?
- 如果不是,您是如何设计这个“测试人员的神奇时间按钮”的,它将应用程序带入未来?尤其是关于计划任务...
明确一点 - 我们的自动测试没有问题(那里不需要调度程序),我们也没有尝试测试调度程序本身。
【问题讨论】:
-
感谢 bpgergo - 实际上我已经看过了。显然,Quartz 中有一个用于时间提供程序的 SPI,现在已弃用(并且未使用)。弄乱正在运行的调度程序的时间是有问题的,这是可以理解的,但是如果通过重新启动调度程序来仔细处理它应该没问题。
标签: java testing quartz-scheduler scheduler