我在Visual Studio 2010中使用MSTest,並且需要在所有測試運行後恢復我的數據庫。如果AssemblyCleanup超時,如何導致測試運行錯誤?
我所做的是裝飾與AssemblyCleanupAttribute屬性的方法。
<AssemblyCleanupAttribute()>
Shared Sub AssemblyCleanup()
' Restore my databases which takes a long time...
End Sub
問題是清理需要花費合理的時間,以至於達到超時。
我開始意識到發生了超時的唯一原因是,在調試模式下輸出窗口報告「... QTAgent32.exe,AgentObject:清理:超時在清理劑達到了。」因此,它非常安靜地失敗,如果MSTest報告測試運行錯誤,我會愛上它。
什麼是檢測和報告超時的最佳方式?我的理想解決方案是將超時報告爲測試運行錯誤。
我到目前爲止發現沒有辦法來檢測超時。有一件事可以幫助其他人,如果你將清理代碼作爲清理腳本運行(在.testrunconfig中配置,並將測試項目設置爲控制檯應用程序並在Main方法中調用AssemblyCleanup),那麼至少超時不會導致數據庫損壞。做上述操作將啓動一個不同的進程,因此無論測試運行是否由於超時而完成,它都將運行到完成。 – Llyle 2011-02-27 23:22:50