防止Visual Studio破坏未处理的异常

时间:2018-01-07 19:49:50

标签: .net exception visual-studio-2017 nunit resharper

我有一组NUnit测试(使用Resharper测试运行器运行),其中一些由于后台线程中发生的断言异常而失败;当这种情况发生时,VS2017会进入调试器,这是不可取的,因为我希望它继续运行其他测试。

  1. “异常设置/ CLR /投掷”中的所有设置均已关闭。
  2. 无论是否打开或关闭“Just My Code”选项,该对话框中的“User-Unhandled”设置都不存在
  3. 关闭所有“例外设置/托管调试助手”设置。
  4. 如何防止它破坏这些例外的任何其他想法?

2 个答案:

答案 0 :(得分:0)

我要提到的第一件事是断言异常不应该传播出你的测试框架。如果它们是,那么可能是因为我无法设想的一些偷偷摸摸的代码。换句话说,所有断言异常都是固有的“处理”,因为你的测试框架会为你处理它们。

还有运行与调试测试的概念。如果您的目的是简单地忽略测试中的所有异常,那么您应该选择运行 - 并且VS根本不会附加调试器(然后不能中断)。我不知道在resharper的测试跑步者中这种差异是什么样的,但在VS中它分别在Test > RunTest > Debug菜单下。

如果您无法重新构建测试,并且想要调试其他异常(只是没有断言异常),或者想要达到断点,请阅读以下内容:

默认情况下,新的调试器(2015+)将在未处理异常时中断 - 但您可以针对所有异常或仅针对特定异常关闭此行为。

  1. 打开例外设置窗口(调试> Windows >例外设置)
  2. 右键单击"公共语言运行时例外" (或您想要更改的特定例外)
  3. 在右键菜单中,点击"在用户代码中未处理时继续"。
  4. 您现在应该看到文本"在用户代码中未处理时继续"在"附加行动"窗口的右侧列和VS不应该再破坏。

答案 1 :(得分:0)

显然,这是Visual Studio中的一个错误。安装以后的更新已修复它。