当在调试模式下运行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
4条答案
按热度按时间e0bqpujr1#
是否尝试使用
ctrl-R ctrl-T
而不是ctrl-R T
运行测试?编辑如果不是键盘快捷键的问题,请检查this链接。您可以尝试以下方法:
1.对于您在此处遇到的异常类型,禁用“用户未处理异常时中断”(通过调试-〉异常)
1.禁用所有异常的“用户未处理异常时中断”(通过调试-〉异常)
1.禁用“仅我的代码”
rhfm7lfc2#
CTRL + RA对我有效,不需要更改任何选项。
我认为您遇到的问题是因为您是从工具栏上的“开始调试”(F5)按钮运行测试项目。如果您单击绿色的“播放”按钮,您将在每个异常中停止,甚至是预期的异常。
要运行所有测试而不停止每个异常,请单击:测试-〉运行-〉解决方案中的所有测试或使用快捷方式:CTRL + R、A
当测试结果视窗开启时,CTRL + R + D也可以使用。在测试结果视窗中,[执行测试]和[两柴测试]之间的差异变得很明显。
6ioyuze23#
@dcp的建议看起来可以用于MSTEST,但是您可能需要考虑使用TestDriven.Net。我几乎专门将它用作测试运行程序,并且在使用右键单击“Run Tests in Debug”模式时没有这个问题。此外,我发现它在几乎所有情况下都比内置的测试运行程序更方便。
pcrecxhr4#
微软最近在上发表的一篇2022年文章显示了这一点:
在
Exception Settings
窗口(Debug
〉Windows
〉Exception Settings
)中,展开例外类别的节点,如Common Language Runtime Exceptions
。然后选中该类别中特定例外的复选框,如System.AccessViolationException
。您还可以选择整个例外类别。来自同一篇文章的示例图片:
如果这个方法行得通,我也会在这个答案上加上一个例子。