在调试模式下运行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
答案 0 :(得分:8)
您是否尝试使用ctrl-R ctrl-T
代替ctrl-R T
来运行测试?
EDIT 如果它不是键盘快捷键问题,请查看this链接。您可以尝试以下所述:
- 为异常类型禁用“中断用户未处理的异常” 你在这里遇到的(通过 调试 - >例外)
- 对所有例外禁用“中断用户未处理的例外”(通过 调试 - >例外)
- 禁用“仅我的代码”
醇>
答案 1 :(得分:3)
CTRL + R A对我有用,无需更改任何选项。
我认为您遇到的问题是因为您正在从工具栏上的“开始调试”(F5)按钮运行测试项目。如果单击绿色播放按钮,您将在每个例外中停止,即使是预期的例外。
要在不停止每个例外的情况下运行所有测试,请单击: 测试 - >运行 - >解决方案中的所有测试 或使用快捷键:CTRL + R,A
打开测试结果窗口,CTRL + R,D也可以。在测试结果窗口中,可以清楚地看到Run Tests和Debug测试之间的区别。
答案 2 :(得分:2)
@ dcp的建议看起来适用于MSTEST,但您可能需要考虑获取TestDriven.Net。我几乎只使用它作为测试运行器,并且使用右键单击“在调试中运行测试”模式时没有出现此问题。此外,我发现它几乎在所有情况下都比内置测试跑步者更方便。