运行junit测试一定的时间

din*_*igo 3 java testing junit

我想测试一段时间,比如5秒钟,然后通过测试,如果没有任何错误被断言.这可能带注释吗?可以使用类似的东西@Test(uptime=5000)吗?

Jon*_*eet 7

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

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

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

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

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

原始答案

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

我想你只想要注释中的timeout属性@Test:

@Test(timeout = 5000)
Run Code Online (Sandbox Code Playgroud)

有文件:

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