Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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 禁用junit测试的超时_Java_Junit - Fatal编程技术网

Java 禁用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)); 如

我需要为长时间运行的junit测试禁用超时,但我正在尝试的任何东西都不能正常工作

首先,我尝试使用以下命令将超时时间延长到非常长的时间

@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、网络等。一个好的替代方法是设置监控并定义所有测试的可接受持续时间。如果超过了限制,监控应该会提醒您。嗯,它似乎有一个默认超时,因为我看到的错误也没有注释。我会更新这个问题来说明这一点。