3
我想测试一段时间,比如说5秒,然后通过测试,如果没有错误已被声明。这可能与注释?可以使用类似@Test(uptime=5000)
的东西吗?运行junit测试一定的时间
我想测试一段时间,比如说5秒,然后通过测试,如果没有错误已被声明。这可能与注释?可以使用类似@Test(uptime=5000)
的东西吗?运行junit测试一定的时间
问题被编辑修订后回答
从根本上说,感觉就像你在这里测试了错误的东西 - 它看起来非常奇怪的“没有发生”是成功的标志。
如果你想证明你的算法可以在一定的时间内运行不会失败,我真的提取出一个周期,然后写的类似测试:
@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)
与文档:
可选择指定以毫秒为单位的超时导致测试方法失败,如果它需要长于那个毫秒数。
只是为了澄清,这只是测试失败,测试方法运行的线程仍在运行,直到JVM停止。 – 2013-03-07 18:22:13
我没有很好地解释我自己。我想跑一段时间,如果什么都没有发生,那就通过测试。 – dinigo 2013-03-08 03:19:55
@ demil133:这是一个非常奇怪的要求 - 与我通常所期望的完全相反。通常情况下,代码不及时完成是*失败*的标志,不成功。你真的想要'while(true){}'的实现成功吗? – 2013-03-08 03:24:16