2012-01-23 96 views
2

這裏是我的情況:整合期間檢測ELMAH異常(華廷+ NUNIT)測試

  • 我有一套,對在CI每共建ASP.net MVC3 Web應用程序運行華廷GUI測試。測試驗證在給定某些輸入時GUI的行爲與預期相同。

  • Web應用程序使用ELMAH xml文件記錄異常。

問題:如何驗證在每次測試運行期間沒有發生意外的異常。如果發生異常,則可以在NUNIT輸出中提供指向ELMAH異常細節的鏈接。

回答

0

這是我的測試做:

  1. 在測試設置記錄的時間
  2. 運行測試
  3. 在測試過程中拆卸瀏覽(elmah.axd /下載)並解析ELMAH CSV
  4. 過濾掉不運行的華廷測試和排在UNIX時間是(1)
  5. 如果有行報告的異常消息和錯誤的URL NUNIT記錄時間之前,用戶相匹配的行。

似乎工作得很好,我們已經發現了一些錯誤,直到人類測試應用程序時纔會出現。

1

Elmah在Web應用程序中運行,它與測試運行器是一個獨立的進程。沒有簡單的方法直接攔截未處理的錯誤。 首先想到的是觀察保存Elmah XML錯誤報告的文件夾(App_Data?)。

您可以在每次測試開始時從文件夾中清除錯誤報告,並在測試結束時檢查它是否仍爲空。如果文件夾不是空的,您可以將錯誤報告複製到測試輸出中。

這種方法不是防彈的。可能會發生錯誤,但在檢查文件夾時XML文件尚未(完全)寫入。例如,當您的Web應用程序超時。如果您嘗試讀取仍在編寫的XML文件,則可能會遇到文件鎖定問題。

而不是從磁盤讀取XML文件,您可以配置ELMAH登錄到數據庫,並從那裏讀取錯誤報告。如果它們發生,這將有助於解決文件鎖定問題。

+0

我試過觀看Marnix van Valen建議的app_data文件夾的想法,但是如果發現異常,則無法確定是否已寫入xml文件。我認爲ELMAH有時會將異常數據保存在內存中,直到瀏覽AXD和特定的異常爲止。因爲我們想避免依賴關係,所以SQL不在了。我要嘗試的另一條路線是下載並解析ELMAH提供的CSV日誌。將發佈結果。謝謝你的幫助。 – Solracnapod

1

爲什麼不去給ELMAH報告視圖(可能elmah.axd)在華廷測試的設置和讀取最近的錯誤的時間戳記錄在那裏。然後在你的測試後做同樣的事情,並斷言時間戳是相同的。

這將是很容易從同一行讀這最近錯誤的網址,並記錄你的失敗斷言的消息,那麼這將是你的NUnit的產出分析。

+0

報告視圖(elmah.axd)中的時間列僅限於分鐘。日誌的CSV(elmah.axd/download)有一個UNIX時間列,我最終使用它來獲得所需的時間精度。 – Solracnapod