3

我想测试一段时间,比如 5 秒,然后如果没有断言错误,则通过测试。这可以通过注释来实现吗?可以使用类似的东西@Test(uptime=5000)吗?

4

1 回答 1

7

编辑问题后的修订答案

从根本上说,感觉就像你在这里测试了错误的东西——“什么都没发生”成为成功的标志似乎很奇怪。

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

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

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

原始答案

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

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

@Test(timeout = 5000)

与文档:

可选地以毫秒为单位指定超时,以在测试方法花费的时间超过该毫秒数时导致失败。

于 2013-03-07T04:02:12.813 回答