Java 禁用junit测试的超时
我需要为长时间运行的junit测试禁用超时,但我正在尝试的任何东西都不能正常工作 首先,我尝试使用以下命令将超时时间延长到非常长的时间Java 禁用junit测试的超时,java,junit,Java,Junit,我需要为长时间运行的junit测试禁用超时,但我正在尝试的任何东西都不能正常工作 首先,我尝试使用以下命令将超时时间延长到非常长的时间 @Test(timeout = Long.MAX_VALUE) 理论上,这应该将超时时间延长到相当于2.92亿年的毫秒数,但测试在大约300分钟后仍然超时 接下来,我尝试了以下方法: @Rule public TestRule timeout = new DisableOnDebug(new Timeout(20, TimeUnit.SECONDS)); 如
@Test(timeout = Long.MAX_VALUE)
理论上,这应该将超时时间延长到相当于2.92亿年的毫秒数,但测试在大约300分钟后仍然超时
接下来,我尝试了以下方法:
@Rule
public TestRule timeout = new DisableOnDebug(new Timeout(20, TimeUnit.SECONDS));
如果我在没有调试模式的情况下运行测试,它们将在大约20秒后超时。这是意料之中的。但是,即使在调试模式下,我仍然会在大约300-400分钟后看到超时(不同)。我不知道在哪里触发此超时或触发什么超时:
以下是超时的摘录:
[junit] Testcase: myTest took 0.002 sec
[junit] Caused an ERROR
[junit] Timeout occurred. Please note the time in the report does not reflect the time until the timeout.
[junit] junit.framework.AssertionFailedError: Timeout occurred. Please note the time in the report does not reflect the time until the timeout.
[junit] at jdk.internal.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[junit] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
这可能是什么原因?我怎样才能完全禁用超时
更新:我应该注意,没有通过注释或规则指定超时,我仍然可以看到超时。为什么要使用超时?根据运行测试的环境的不同,时间基本上会有所不同。它可能取决于可用的CPU功率、特定时刻的负载、RAM、网络等。一个好的替代方法是设置监控并定义所有测试的可接受持续时间。如果超过了限制,监控应该会提醒您。嗯,它似乎有一个默认超时,因为我看到的错误也没有注释。我会更新这个问题,说明你为什么要使用超时?根据运行测试的环境的不同,时间基本上会有所不同。它可能取决于可用的CPU功率、特定时刻的负载、RAM、网络等。一个好的替代方法是设置监控并定义所有测试的可接受持续时间。如果超过了限制,监控应该会提醒您。嗯,它似乎有一个默认超时,因为我看到的错误也没有注释。我会更新这个问题来说明这一点。