2013-04-06 43 views
2

我正在通過Specflow爲QA編寫測試代碼。 (例如:Assert.IsTrue(foo,「foo is not true,test could not proceed」))以及失敗消息。當一個步驟或其中的一部分失敗時,我們會拋出一個包含錯誤消息的Exception,並將其捕獲到頂層。發送測試失敗消息給測試人員用Specflow在C#

問題是現在「失敗消息」包含非常長的異常消息(包含確切的文件,方法和類名 - 對測試人員不重要的信息)。

我想知道是否有辦法忽略頂級異常消息的特定部分。 或 也許使用另一種策略,而不是使用異常throw \ catch和Assertions。

+0

行爲,你可以提供一個小樣本,具體在哪裏,你處理斷言失敗? – oleksii 2013-04-06 21:10:19

+0

斷言有時會失敗,這意味着 - 當斷言失敗時,系統中存在一個錯誤。 例如:Assert.IsTrue(ServerResponseIsOk(),「服務器不正常,請檢查」) – Wasafa1 2013-04-07 06:25:37

+0

不清楚哪個代碼會引發異常,您或SpecFlow /單元測試框架。如果這是你的代碼,那麼在異常細節中沒有什麼不好的。最終用戶會看到一個特定的測試失敗,可能只關心構建是綠色還是紅色。你作爲開發人員會關心細節的細節。 – oleksii 2013-04-07 09:01:17

回答

0

這聽起來像你只是不希望堆棧信息,當斷言失敗。許多人在嘗試調試時覺得這很有用,所以我可能會建議嘗試隱藏它,而不是擺脫它。

由於SpecFlow的所有功能都是將功能文件轉換爲測試(假設現在是nunit),爲了運行測試,您只需像往常一樣運行NUnit。如果您使用nunit-console.exe來執行,那麼開箱即用的SpecFlow會提供一個HTML報告生成器來執行您所要求的操作。這也適用於mstest,如果這就是你正在使用的。

它列出了所有測試,並將它們顯示爲紅色或綠色,並且有[show]/[hide]選項,只有您關心它時才允許顯示更多信息。您可以修改報告生成器以根據測試輸出執行任何操作,但我真的建議將它保留在那裏。

以下鏈接顯示您將如何設置。我們在CI中運行這個腳本,但是你可以寫一個批處理腳本,甚至通過C#來執行它。

https://github.com/techtalk/SpecFlow/wiki/Reporting

NUnit的亞軍

nunit-console.exe /labels /out=TestResult.txt /xml=TestResult.xml bin\Debug\BookShop.AcceptanceTests.dll 
  • 輸出文件有console.WriteLine資訊
  • XML文件的測試結果

SpecFlow報告生成

specflow.exe nunitexecutionreport BookShop.AcceptanceTests.csproj /out:MyResult.html 
  • 生成HTML報告,對測試人員閱讀和