簡體   English   中英

Assert.DoesNotThrow與NUnit - 如何獲得堆棧跟蹤?

[英]Assert.DoesNotThrow with NUnit — how to get stack trace?

我正在使用NUnit進行單元測試(使用TD.NET運行)。

使用Assert.DoesNotThrow時,我得到了異常,但沒有任何堆棧跟蹤,這使得識別根問題變得更加困難。

我該如何解決這個問題?

Assert.DoesNotThrow是多余的,如果測試拋出測試將在沒有斷言的情況下自動失敗。 根據我的拙見,清楚地說明測試的是什么,在測試方法名稱中更好地傳達。 Assert.DoesNotThrow語法中的文檔優勢很少,正如您所指出的那樣,只是使修復失敗測試變得更加困難。

此外,如果你有一個非常長的測試多個斷言, Assert.DoesNotThrow填補了一個重要的角色,斷言正確的代碼塊引發了異常。 但是,在這種情況下,更合適的解決方案是查看是否可以縮短測試和/或將斷言移入他們自己的測試中。

我懷疑它真的回答了你的問題,但我將測試縮短到一個單一的情況,這樣你就不需要將一些代碼包裝到你傳遞給Assert.DoesNotThrow的委托中。 然后,只需編寫測試而無需任何斷言。 拋出意外異常的測試將失敗,因此它將執行您想要的操作,並且您將獲得完整的異常。

大約10% - 我的測試工作是這樣的; 根本沒有斷言,方法名稱如ThisOrThatShouldNeverThrow()

在調試時,另一個選項是在調試器中運行測試(使用TD.Net),在Debug | Exceptions中檢查一些額外的框,以便在拋出異常時調試器停止。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM