Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中测试ScheduledExecutionerService_Java_Schedule - Fatal编程技术网

在Java中测试ScheduledExecutionerService

在Java中测试ScheduledExecutionerService,java,schedule,Java,Schedule,我使用ScheduledExecutionerService每年安排两次活动,但我真的不确定如何进行测试。从何处开始测试计划程序?如何确保它在正确的时间和日期启动?您可以这样做,但每次应用程序启动时都必须小心重新安排DST切换作业,因为使用ScheduledExecutorService计划的作业不会以任何形式持久化,因此,只有在应用程序终止之前,才会安排 我会这样做: 编写一个实用程序,用于设置正确的DST模式,该模式可以在没有参数的情况下调用,并根据当前全局时间自行确定如何设置DST 启动

我使用ScheduledExecutionerService每年安排两次活动,但我真的不确定如何进行测试。从何处开始测试计划程序?如何确保它在正确的时间和日期启动?

您可以这样做,但每次应用程序启动时都必须小心重新安排DST切换作业,因为使用
ScheduledExecutorService
计划的作业不会以任何形式持久化,因此,只有在应用程序终止之前,才会安排

我会这样做:

  • 编写一个实用程序,用于设置正确的DST模式,该模式可以在没有参数的情况下调用,并根据当前全局时间自行确定如何设置DST
  • 启动时,运行该方法一次
  • 启动时,计划在各自的日期(和时间)进行两次(重新出现)切换,运行该方法

这样,如果在DST切换期间运行,应用程序将在相应日期自动更正DST模式。

您有一个长期运行的应用程序,并且运行它的计算机在半年内不会重新启动
ScheduledExecutionerService
是一个用于管理线程的类,可能是应用程序内的定时执行,但它不是持久性的,也不能跨同一应用程序的多个执行(开箱即用)调度某些内容。如果这是你的意图,那么你需要在这里扩展。否则,这个类就不适合您的用例。当时钟向前/向后移动时,我必须围绕夏令时进行一些配置更改。我想确定调度程序启动了,并且时间向前/向后,这样我就可以进行更改。基本上,我将安排第一个DST更改,然后在完成第一个计划的事件后重新安排第二个DST更改。您是应用程序服务器吗?您真的希望您的应用程序在不中断或重新启动的情况下运行吗?如果使用
ScheduledExecutorService
计划某项任务并重新启动应用程序,则不会执行计划的作业(因为它是在另一个JVM生命周期中计划的)。您需要以某种形式持久化作业,或者至少在重新启动时重新安排作业。要测试这一点,请编写一个testcast(单元测试),该测试计划更短,并执行其他操作(例如记录一些消息)。时钟设置的测试可能可以独立完成。不,它不是服务器,应用程序可能会重新启动吗?那么,我们会推荐什么来安排活动呢?当我查找时,ScheduledExecutionerService是推荐的主要服务?它是推荐的,因为它可以(比大多数其他选项更精确地)为将来的执行安排一些事情,但您仍然必须在每次应用程序启动时实例化执行服务,然后您可能可以根据当前日期做出决定,下一个DST切换是什么,并安排它们。由于您的工作(可能)不需要仅存在于一个应用程序生命周期中的对象,因此您可以放心地执行此操作。正如您所说,我确实需要在应用程序启动时安排这个,但这很好,因为我仍然可以使用ScheduleExecutionerService。那么,我有没有办法测试一下这是否有效?我如何才能确定它确实是在DST更改日期启动的。例如,记录一条比较前后时间的消息?记录类似“时间从X到Y设置”的内容,或者如果您实际上没有服务器,因此可能没有记录,您可以弹出消息,或向其他形式的客户端消息添加内容,具体取决于您开发的内容。好的,谢谢,我现在可以记录消息,因为我们已经完成了此设置。