Java 在一定时间内运行junit测试

Java 在一定时间内运行junit测试,java,testing,junit,Java,Testing,Junit,我想测试一段时间,比如说5秒钟,然后如果没有错误就通过测试。这可以通过注释实现吗?可以使用类似于@Test(正常运行时间=5000)的方法吗?编辑问题后修改答案 从根本上说,你在这里测试的东西是错误的——把“什么都没发生”作为成功的标志似乎很奇怪 如果你想证明你的算法可以运行一段时间而不会失败,我会提取一个周期,然后写一个测试,比如: @Test public void fineForFiveSeconds() { long start = System.nanoTime();

我想测试一段时间,比如说5秒钟,然后如果没有错误就通过测试。这可以通过注释实现吗?可以使用类似于
@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)