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