运行junit测试一定的时间

时间:2013-03-07 04:00:22

标签: java testing junit

我想测试一段时间,比如5秒钟,然后在没有错误的情况下通过测试。这可能带注释吗?是否可以使用@Test(uptime=5000)之类的东西?

1 个答案:

答案 0 :(得分:7)

问题修改后的修改后的答案

从根本上说,感觉你在这里测试的是错误的东西 - 似乎很奇怪“没有任何事情发生”是成功的标志。

如果你想证明你的算法可以运行一段时间而不会失败,我实际上会提取出一个循环,然后写一个类似的测试:

@Test
public void fineForFiveSeconds() {
    long start = System.nanoTime();
    long end = start + TimeUnit.SECONDS.toNanos(5);
    while (System.nanoTime < end()) {
        test.executeOneIteration();
    }
}

这样你就没有一个单独的线程,它必须杀死工作代码等。

原始回答

这个答案是在之前写的,问题表明超时是成功的标志,而不是失败。

我认为您只需要@Test注释中的timeout属性:

@Test(timeout = 5000)

带文档:

  

(可选)指定超时(以毫秒为单位),以使测试方法在超过该毫秒数时失败。