繁体   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