我们正在构建一个包含大量计划处理的财务应用程序。我们希望轻松地对应用程序进行手动测试,但由于大多数过程需要数月才能完成,因此我们需要为测试人员提供一个选项来提前移动当前日期。
伪造所有业务服务的当前日期并不是问题,因为它们都通过“TimeService”间接访问日期。我们遇到的问题是调度程序(Quartz)。将调度程序的当前日期移动到未来(也不是过去,但这没有多大意义)是不可能的。我知道调度程序当前运行的时间可能不是最好的想法,但如果你可以使用相对于当前日期的偏移时间间隔来启动调度程序,那么应该没有逻辑问题 - Quartz应该只找到所有错过的执行并根据配置的失火指令处理它们。
所以在这个一般设计问题中更具体一点:
请注意 - 我们的自动测试没有问题(不需要调度程序),我们也没有尝试测试调度程序。
答案 0 :(得分:1)
我只是强调我们最终为可能感兴趣的其他人实施的解决方案。最后,我们根本没有在开发环境中使用Quartz。调度程序仅在生产配置中运行(显然不可能转移时间)。然后我们有一段特殊的代码,在转换时间(仅在开发/测试环境中出现)时,每天都会启动日常处理。
我们的底线:不要试图结合调度程序和放大器将时间转移到未来 - 使用一个XOR创建单独的配置,使用特殊逻辑在无调度程序的配置中替换调度程序。
答案 1 :(得分:0)
您唯一真正的选择是在启动调度程序之前延长系统的时间。