问题 如何防止预期的异常破坏调试测试运行?


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

5561
2017-07-29 12:04


起源



答案:


你尝试过使用测试吗? ctrl-R ctrl-T 代替 ctrl-R T

编辑 如果它不是键盘快捷键问题,那么请检查 这个 链接。您可以尝试以下所述:

  1. 对异常类型禁用“中断用户未处理的异常”   你在这里遇到的(通过   调试 - >例外)
  2. 对所有异常禁用“中断用户未处理的异常”(通过   调试 - >例外)
  3. 禁用“只是我的代码”

8
2017-07-29 12:08



我没有使用键盘快捷键来运行测试,而是使用鼠标代替。我阅读了这篇文章,它只是没有帮助我,因为它显示了运行和不调试的不同快捷方式。我想调试,但没有停止预期的异常。 - Jader Dias
@Jader Dias - 请参阅我的最新编辑,了解另一种可能的解决方案。 - dcp
这也会影响意外的异常 - Jader Dias


答案:


你尝试过使用测试吗? ctrl-R ctrl-T 代替 ctrl-R T

编辑 如果它不是键盘快捷键问题,那么请检查 这个 链接。您可以尝试以下所述:

  1. 对异常类型禁用“中断用户未处理的异常”   你在这里遇到的(通过   调试 - >例外)
  2. 对所有异常禁用“中断用户未处理的异常”(通过   调试 - >例外)
  3. 禁用“只是我的代码”

8
2017-07-29 12:08



我没有使用键盘快捷键来运行测试,而是使用鼠标代替。我阅读了这篇文章,它只是没有帮助我,因为它显示了运行和不调试的不同快捷方式。我想调试,但没有停止预期的异常。 - Jader Dias
@Jader Dias - 请参阅我的最新编辑,了解另一种可能的解决方案。 - dcp
这也会影响意外的异常 - Jader Dias


@ dcp的建议看起来适用于MSTEST,但你可能想考虑获取 TestDriven.Net。我几乎只使用它作为测试运行器,并且使用右键单击“在调试中运行测试”模式时没有出现此问题。此外,我发现它几乎在所有情况下都比内置测试跑步者更方便。


2
2017-07-29 12:13





CTRL + R A适用于我,无需更改任何选项。

我认为您遇到的问题是因为您正在从工具栏上的“开始调试”(F5)按钮运行测试项目。如果单击绿色播放按钮,您将在每个例外中停止,即使是预期的例外。

要在不停止每个例外的情况下运行所有​​测试,请单击: 测试 - >运行 - >解决方案中的所有测试 或使用快捷键:CTRL + R,A

打开测试结果窗口,CTRL + R,D也可以。在测试结果窗口中,运行测试和调试测试之间的区别变得清晰。


2
2018-06-21 14:52