如何使用调度程序(Quartz)手动测试应用程序?

时间:2011-06-07 15:13:19

标签: java testing quartz-scheduler scheduler

我们正在构建一个包含大量计划处理的财务应用程序。我们希望轻松地对应用程序进行手动测试,但由于大多数过程需要数月才能完成,因此我们需要为测试人员提供一个选项来提前移动当前日期。

伪造所有业务服务的当前日期并不是问题,因为它们都通过“TimeService”间接访问日期。我们遇到的问题是调度程序(Quartz)。将调度程序的当前日期移动到未来(也不是过去,但这没有多大意义)是不可能的。我知道调度程序当前运行的时间可能不是最好的想法,但如果你可以使用相对于当前日期的偏移时间间隔来启动调度程序,那么应该没有逻辑问题 - Quartz应该只找到所有错过的执行并根据配置的失火指令处理它们。

所以在这个一般设计问题中更具体一点:

  1. 是否可以伪造Quartz的当前日期?
  2. 如果没有,那么您为应用程序设计这个“测试人员的魔术时间按钮”的方式是什么?特别是关于预定任务......
  3. 请注意 - 我们的自动测试没有问题(不需要调度程序),我们也没有尝试测试调度程序。

2 个答案:

答案 0 :(得分:1)

我只是强调我们最终为可能感兴趣的其他人实施的解决方案。最后,我们根本没有在开发环境中使用Quartz。调度程序仅在生产配置中运行(显然不可能转移时间)。然后我们有一段特殊的代码,在转换时间(仅在开发/测试环境中出现)时,每天都会启动日常处理。

我们的底线:不要试图结合调度程序和放大器将时间转移到未来 - 使用一个XOR创建单独的配置,使用特殊逻辑在无调度程序的配置中替换调度程序。

答案 1 :(得分:0)

您唯一真正的选择是在启动调度程序之前延长系统的时间。