我正在WCF服務上運行一些單元測試。該服務配置爲在故障響應中包含異常詳細信息(在我的服務配置文件中包含以下內容)。.NET單元測試運行器輸出FaultException.Detail
<serviceDebug includeExceptionDetailInFaults="true" />
如果測試引起故障是由客戶端收到一個完全填充的服務器堆棧跟蹤在服務器上未處理的異常。我可以通過調用例外的ToString()
方法來看到這一點。問題是,這似乎不是由我嘗試過的任何測試運行器輸出(xUnit,Gallio,MSTest)。它們似乎只輸出異常的消息和StackTrace屬性。
爲了說明我的意思,下面的單元測試將輸出三個部分:
- 錯誤消息
- 錯誤堆棧跟蹤
- 標準控制檯輸出(包含我希望的信息,如「 Fault Detail等於ExceptionExtell,可能由IncludeExceptionDetailInFaults = true創建,其值爲:...「
public void Test()
{
try
{
service.CallMethodWhichCausesException();
}
catch (Exception ex)
{
Console.WriteLine(ex); // this outputs the information I would like
throw;
}
}
編輯:不過,我更希望我不是被迫捕獲異常中的每個測試,它以確定一個FaultException
對象的Detail
屬性中的內容寫入控制檯。
例如,
public void Test()
{
service.CallMethodWhichCausesException();
}
有了這個信息將使得測試和部署少了很多痛苦的初始階段。
我知道我可以只是包裝每個單元測試在一個通用的異常處理和寫入例外控制檯,並重新拋出(如上)我所有的單元測試中,但似乎 實現這一目標的一個很囉嗦的方式(並且看起來很糟糕)。
有誰知道,如果有什麼辦法讓每當未處理異常發生時包含這些信息?有沒有我失蹤的設置?我的服務配置缺乏正確的故障處理嗎?也許我可以爲某個單元測試框架編寫某種插件/適配器?也許這是我應該使用的另一個單元測試框架!
我的實際設置是通過Gallio爲開發環境執行的xUnit單元測試,但我確實有一套單獨的「煙霧測試」套件,我希望我們的工程師可以通過xUnit GUI測試跑步者(或Gallio或其他)來簡化最終部署。
感謝。
Adam Adam
謝謝,但我知道,控制檯輸出爲t捕獲他測試跑步者(並隨後顯示)。我正在尋找獲取由測試運行器自動捕獲和輸出的`FaultException`的`Detail`屬性的內容,用於未處理的異常(即,我不想避免在每個單元測試中編寫一個異常處理程序只是爲了顯示這個額外但重要的信息)。 – Adam 2011-01-12 09:49:23