debugging 如何防止预期的例外状况中断两柴测试回合?

6l7fqoea  于 2022-11-14  发布在  其他
关注(0)|答案(4)|浏览(152)

当在调试模式下运行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
e0bqpujr

e0bqpujr1#

是否尝试使用ctrl-R ctrl-T而不是ctrl-R T运行测试?
编辑如果不是键盘快捷键的问题,请检查this链接。您可以尝试以下方法:
1.对于您在此处遇到的异常类型,禁用“用户未处理异常时中断”(通过调试-〉异常)
1.禁用所有异常的“用户未处理异常时中断”(通过调试-〉异常)
1.禁用“仅我的代码”

rhfm7lfc

rhfm7lfc2#

CTRL + RA对我有效,不需要更改任何选项。
我认为您遇到的问题是因为您是从工具栏上的“开始调试”(F5)按钮运行测试项目。如果您单击绿色的“播放”按钮,您将在每个异常中停止,甚至是预期的异常。
要运行所有测试而不停止每个异常,请单击:测试-〉运行-〉解决方案中的所有测试或使用快捷方式:CTRL + R、A
当测试结果视窗开启时,CTRL + R + D也可以使用。在测试结果视窗中,[执行测试]和[两柴测试]之间的差异变得很明显。

6ioyuze2

6ioyuze23#

@dcp的建议看起来可以用于MSTEST,但是您可能需要考虑使用TestDriven.Net。我几乎专门将它用作测试运行程序,并且在使用右键单击“Run Tests in Debug”模式时没有这个问题。此外,我发现它在几乎所有情况下都比内置的测试运行程序更方便。

pcrecxhr

pcrecxhr4#

微软最近在上发表的一篇2022年文章显示了这一点:
Exception Settings窗口(DebugWindowsException Settings)中,展开例外类别的节点,如Common Language Runtime Exceptions。然后选中该类别中特定例外的复选框,如System.AccessViolationException。您还可以选择整个例外类别。
来自同一篇文章的示例图片:

如果这个方法行得通,我也会在这个答案上加上一个例子。

相关问题