簡體   English   中英

如何防止預期異常破壞調試測試運行?

[英]How to prevent expected exceptions from breaking the debug test run?

在調試模式下運行 MSTEST 單元測試時,執行會在拋出的每個預期異常中停止。 我的測試看起來像這樣

[TestMethod()]
[ExpectedException(typeof(ArgumentNullException))]
public void ShouldThrowExceptionWhenPassingNull()
{
    object data = null;
    target.CheckNull(data);
}

目標方法如下所示:

public void CheckNull(object data)
{
    if (ReferenceEquals(null, data))
    {
        throw new ArgumentNullException("data");
    }
} // test run breaks here: ArgumentNullException was unhandled by user code

您是否嘗試使用ctrl-R ctrl-T而不是ctrl-R T來運行測試?

編輯如果它不是鍵盤快捷鍵問題,請查看鏈接。 您可以嘗試以下所述:

  1. 對於您在此處遇到的異常類型,禁用“中斷用戶未處理的異常”(通過調試 - >異常)
  2. 對所有異常禁用“中斷用戶未處理的異常”(通過Debug - > Exceptions)
  3. 禁用“只是我的代碼”

CTRL + RA適用於我,無需更改任何選項。

我認為您遇到的問題是因為您正在從工具欄上的“開始調試”(F5)按鈕運行測試項目。 如果單擊綠色播放按鈕,您將在每個例外中停止,即使是預期的例外。

要在不停止每個異常的情況下運行所有​​測試,請單擊:測試 - >運行 - >解決方案中的所有測試或使用快捷方式:CTRL + R,A

打開測試結果窗口,CTRL + R,D也可以。 在測試結果窗口中,運行測試和調試測試之間的區別變得清晰。

@ dcp的建議看起來適用於MSTEST,但您可能需要考慮獲取TestDriven.Net 我幾乎只使用它作為測試運行器,並且使用右鍵單擊“在調試中運行測試”模式時沒有出現此問題。 此外,我發現它幾乎在所有情況下都比內置測試跑步者更方便。

Microsoft 上最近的一篇 2022 年文章顯示了這一點:

Exception Settings window( Debug > Windows > Exception Settings )中,展開異常類別的節點,例如Common Language Runtime Exceptions 然后 select 該類別中特定異常的復選框,例如System.AccessViolationException 您還可以 select 整個類別的異常。

來自同一篇文章的示例圖片: 在此處輸入圖像描述

如果這恰好有效,我也會在此答案中添加一個示例。

暫無
暫無

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

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