2011-12-13 74 views
2

我有一套~1500測試的測試套件,它們通常在'合理的時間內'運行並完成。CC.Net構建服務器 - 如何找到完全沒有完成的NUnit測試?

但是,最近我改變了部分代碼來使用線程 - 現在我的構建通過簡單超時而不時失效。我想象一個線程拒絕死亡,並且構建等待,直到達到最大構建時間。

我的問題是如何檢測哪個測試導致問題?

我可以激活一些記錄,顯示測試已經開始/完成嗎?我當然可以通過在每一種測試方法中插入代碼來完成 - 或者只是固定裝置,但這是我寧願避免的很多工作。

回答

2

我建議升級到NUnit 2.5並使用Timeout屬性裝飾您的測試,指定每個測試運行時間的最大值。例如,你可以把這個在您的AssemblyInfo.cs

[assembly: NUnit.Framework.Timeout(100)] 

NUnit現在將在一個單獨的線程推出的每項測試,如果超過它的時間cancell它。但是,這可能代價高昂,因此最好能夠確定長時間運行的測試,然後移除彙編級屬性,以利用測試夾具時隙。您也可以在個別測試中覆蓋此項,爲他們分配更多時間運行。

通過這種方式,您可以將CruiseControl.Net中的超時/掛起檢測移動到NUnit,並獲取報告中關於未正確完成的任務的信息。不幸的是,當CC.Net由於超時而不得不殺死進程時,無法獲取這些信息。

+0

太棒了;甚至比我所希望的更好! 謝謝! –