[英]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.