Java 在一定时间内运行junit测试
我想测试一段时间,比如说5秒钟,然后如果没有错误就通过测试。这可以通过注释实现吗?可以使用类似于Java 在一定时间内运行junit测试,java,testing,junit,Java,Testing,Junit,我想测试一段时间,比如说5秒钟,然后如果没有错误就通过测试。这可以通过注释实现吗?可以使用类似于@Test(正常运行时间=5000)的方法吗?编辑问题后修改答案 从根本上说,你在这里测试的东西是错误的——把“什么都没发生”作为成功的标志似乎很奇怪 如果你想证明你的算法可以运行一段时间而不会失败,我会提取一个周期,然后写一个测试,比如: @Test public void fineForFiveSeconds() { long start = System.nanoTime();
@Test(正常运行时间=5000)
的方法吗?编辑问题后修改答案
从根本上说,你在这里测试的东西是错误的——把“什么都没发生”作为成功的标志似乎很奇怪
如果你想证明你的算法可以运行一段时间而不会失败,我会提取一个周期,然后写一个测试,比如:
@Test
public void fineForFiveSeconds() {
long start = System.nanoTime();
long end = start + TimeUnit.SECONDS.toNanos(5);
while (System.nanoTime < end()) {
test.executeOneIteration();
}
}
随附文件:
(可选)指定超时(以毫秒为单位),以便在超时时间超过该毫秒数时导致测试方法失败
为了澄清,这只是测试失败,测试方法运行的线程仍然在运行,当然,直到JVM停止。我没有很好地解释我自己。我想跑一段时间,如果什么也没发生,就通过测试。@demil133:这是一个非常奇怪的要求,与我通常期望的正好相反。通常,代码没有及时完成是失败的标志,而不是成功的标志。你真的想让
的while(true){}
实现成功吗?@JonSkeet:谢谢你的提示。也许是我的观点出了什么问题。我将尝试不同的近似测试。@demil133:我已经编辑了我的答案,以表明可能的方法,但仍然很奇怪:)
@Test(timeout = 5000)