2012-11-13 51 views
0

我已經設置了一個Ant構建腳本來運行Cobertura的單元測試。我在「junit」任務中有一個「超時」屬性「10000」。junit有時會因超時錯誤而失敗,即使遠低於極限

我測試過多次運行我的單元測試。出於某種原因,當我第一次具有不運行了一段時間後,運行它(如在早晨的第一件事),我經常看到每一個測試用例失敗是這樣的:

Testsuite: ... 
Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec 

Testcase: null took 0.109 sec 
    Caused an ERROR 
Timeout occurred. Please note the time in the report does not reflect the time until the timeout. 
junit.framework.AssertionFailedError: Timeout occurred. Please note the time in the report does not reflect the time until the timeout. 

每當發生這種情況,我只是重新運行命令行,一切正常。當它像這樣失敗時,它在啓動之前會稍微延遲一點,但這絕對不是10秒。

我該怎麼做才能防止這種情況發生?當我從命令行手動運行它時會發生一件事情,但是當我從CI服務器運行這個設置時,會發生另一件事情,無關的故障將更加惱人。

+0

什麼是測試在做什麼? 「早上第一件事」聽起來像是某種緩存。例如,對像Oracle這樣的數據庫反覆運行相同的SQL查詢通常會觸發內部數據庫緩存,從而提高查詢性能。 –

+0

這些是純粹的單元測試。它們不連接到數據庫或任何外部服務。 –

+0

奇怪,也許別人有想法。 –

回答

0

我想我會打電話給這個模擬。部分問題是,Cobertura目前正在打印大量的調試輸出,我想這是導致問題的原因。當我添加「forkmode =」一次「'時,它會有所幫助。他們正在努力爲Cobertura增加一個「安靜模式」,這將進一步提供幫助。

相關問題