忽略其他程序集处理的异常

时间:2015-04-26 06:13:15

标签: c# testing exception-handling

我有一个烟雾测试应用程序的几个关键服务。我希望这些测试能够轻松编写并自我发现。为此,我使用MSTest的[TestMethod]样式为每个方法创建了一个属性。我还创建了一个对象,它将找到所有这些方法并在try-catch中执行它们。如果方法抛出异常,我报告为失败,否则为成功。

这是所有非常熟悉的单元测试,这是意图。所以测试看起来像......

[MyTestAttribute]
public void TestingTimesAhead()
{
  var d = DateTime.MaxValue.AddDays(1);
}

魔法发生在测试对象中,它有一个Action属性和一个Run方法......

    public Action TestAction { get; private set; } 

    public override ITestResult RunTest()
    {
        try
        {
            this.TestAction.Invoke();
            return new BaseTestResult() { Result = TestResultStatus.Success };
        }
        catch(Exception ex)
        {
            return new BaseTestResult() { Result = TestResultStatus.Failure, FailureException = ex};
        }
    }

当单独运行时,上面的测试被包装为Action,将导致异常并且测试失败。完美。

但是,当我将属性和测试运行对象包装到dll并从新项目引用时,VS Debugger会中断异常。 我在该对话框中看到一个选项,当这个例外类型是用户未处理的时候切换到中断'。 Exception screen shot

我可以逐个类型地抑制异常,但这并不适用于重用。此外,如果我从BIN输出运行发布版本,那么预期的行为就在那里 - 它只是一个非常尴尬的开发体验。

是否可以从我的代码中管理此例外设置?或者,如果任何人都可以提出解决问题的方法,我就会接受这些想法。

0 个答案:

没有答案