在Visual Studio C#Express 2010中调试Nunit测试

Geo*_*ett 6 c# debugging nunit visual-studio-express

我已经按照这个建议来调试NUnit测试.

http://www.blackwasp.co.uk/NUnitCSharpExpress.aspx

但是,我有几个测试Assert.Throws<...>,这会导致调试器在我正在测试的异常发生时中断,当我真的希望它在这些调用之外发生异常时中断.

如何让调试器忽略这些方法中引起的异常?


编辑:我的事件尝试了下面,这是行不通的!

[Test]
public void InstanciatingWithNullParameterThrowsException()
{
    try
    {
        Assert.Throws<ArgumentNullException>(() => new CachedStreamingEnumerable<int>(null));
        // This still throws and stops be being able to debug tests called after this one
    }
    catch
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*n.K 4

这是对我有用的(虽然在 Visual Studio Professional 中,而不是 Express,但我想这应该不重要)。

  • 按照 Ninjapig 的建议调出“例外”对话框。

  • 单击按钮Add...,打开“新建异常”对话框。

  • 在下拉框中选择“公共语言运行时例外”
  • 在编辑框中输入“NUnit.Framework.AssertionException”。
  • 单击OK以关闭“新建例外”对话框。
  • 返回“例外”对话框,确保两个复选框(Thrown User-unhandled)均未选中

现在,调试器应该完全忽略 NUnit 断言失败(即抛出、捕获或未捕获NUnit.Framework.AssertionException)。

更新:这只会阻止闯入调试器,它不能忽略异常本身;即它不会改变实际的程序流程。除了更改、替换或封装 try-catch 块中的断言调用之外,我认为没有任何东西可以实现这一目标(至少不能自动实现)。