Dot-Net
MSTest ExpectedException 失敗
我通常使用 Nunit,但在我目前的項目中,我使用的是 MSTest。現在我有一個測試,它期望出現異常但一直失敗,我不知道為什麼。
這是我用來複製問題的一個簡單範例:
[TestMethod, ExpectedException(typeof(ErrorResponseException))] public void should_throw_exception() { throw new ErrorResponseException(); }ErrorResponseException 是一個僅從 Exception 繼承的類,就是這樣,任何人都知道為什麼會失敗,我希望它能夠通過。
在 NUnit 中,我會避免使用 ExpectedException 並改用 Assert.Throws (Exception Asserts)。它為您提供更細粒度的控制。否則,如果測試方法的任何部分拋出該異常,測試將通過。
在 MSTest 中,您可以獲得與老式結構相同級別的控制:
try { // code that you expect to throw goes here Assert.Fail("Expected MyException"); } catch (MyException ex) { // optionally assert on the message - this can make tests fragile though }有了這個,就不需要 ExpectedException 屬性。
(這個概念來自 David Astels 的《測試驅動開發:實用指南》一書。)