防止 VS C# 单元测试因异常而中断

Posted

技术标签:

【中文标题】防止 VS C# 单元测试因异常而中断【英文标题】:Prevent VS C# Unit Testing breaking on exceptions 【发布时间】:2012-08-21 13:59:45 【问题描述】:

我想编写一个单元测试来检测抛出的异常。使用ExpectedExceptionAttribute,我从 MSVS 内部运行测试,当 TestMethod 遇到异常时,调试器中断异常,但 TestMethod 正确跳过并报告 Passed。

是否有一个标志告诉 VS 在单元测试期间不要中断?

【问题讨论】:

【参考方案1】:

不要在调试会话中运行测试。您可以选择“运行选择”或“调试选择”,选择第一个就可以了。

【讨论】:

@Jake 在这个场景中使用 ctrl + F5,和运行选择(非调试)一样 是的,我意识到我的 CTRL 不起作用!所以我删除了我之前的评论。阅读您的答案后,我找到了“测试”菜单,所以我认为我必须从那里运行。谢谢。【参考方案2】:

如果您按CTRL + ALT + E,您可以配置调试器是否会在抛出和/或不处理不同类型的异常时中断。

我发现有时使用这些设置非常方便。

【讨论】:

该对话框(调试:异常)上有很多选项(复选框)。我发现我只需要取消选中 Common Language Runtime Exceptions (line) Thrown (column) 框。我同意另一种选择是在没有调试器的情况下运行,但有时您出于某种原因确实想使用调试器运行。因此,当您需要使用调试器并且不想在第一次出现异常时中断时,这是一个不错的选择。【参考方案3】:

作为 MS 单元特定 [ExpectedException] 的替代方案,如果您需要调试单元测试,您可以显式尝试/捕获异常并断言异常类型,例如在此处完成:How do I use Assert to verify that an exception has been thrown?

【讨论】:

以上是关于防止 VS C# 单元测试因异常而中断的主要内容,如果未能解决你的问题,请参考以下文章

基于C#的单元测试(VS2015)

.NET 单元测试的艺术&单元测试之道C#版

VS2015安装&简单的C#单元测试

VS2015 C#的单元测试

python单元测试来测试循环而不是中断

C# - 单元测试,模拟?