MSTEST - 断言失败后继续

时间:2012-02-14 22:58:36

标签: visual-studio visual-studio-2010 mstest

我很想知道在Assert失败后是否有一种简单的方法可以完成测试。我们曾经使用Galileo进行所有自动化测试,但我们已经移动了Visual Studio Test框架。我们有一个允许测试失败的方法,但继续。

        public static bool DoAssertAndContinue(Action assert)
    {
        try
        {
            assert();
            return true;
        }
        catch (AssertionException ae)
        {
            ConfigContext.WriteLine(ae.Message);
            return false;
        }
    }

这是我们以前用过的......它会被这样调用:

assertionResults.Add(Automation.Utils.CommonMethods.DoAssertAndContinue(() => Assert.IsTrue(detail.ValidateName(boo, urns))));

我只是想弄清楚以前模仿我们以前所拥有的东西的最好方法,而不必重构我们所有的测试。

3 个答案:

答案 0 :(得分:4)

现在应该捕获UnitTestAssertException而不是AssertionException,这是所有mstest断言失败的基本异常。

答案 1 :(得分:1)

您也可以在MSTest中使用Try / Catch。在Catch块中,您可以捕获特定错误并使用Console.Write打印它以了解错误。我建议您查看此thread以获取更多详细信息。

编辑1:我个人不会使用try / catch来传递我的测试方法。我写了一个测试方法来发现实际产品中的缺陷。因此,如果您期望您的调用方法会给您一些特定的异常,那么我建议使用ExpectedException属性。如果您正在运行单个测试数据的测试方法,则此选项适用。

现在,如果您想将多个测试数据传递到测试方法中。然后我建议去寻找数据驱动的测试用例。在这里,您可以将所有测试数据保存在XML或XLS或DB中。然后使用该输入文件,您可以将多个测试数据提供给您的测试方法。如果你的调用方法发送了一些异常,那么尽量不要在这里使用try / catch和任何测试数据,然后看看MSTest是否会处理它并转移到下一个测试数据。如果它在测试结果窗口中移动,您将能够看到您的方法失败的特定测试数据的原因。有关数据驱动的概念,请参阅此link

答案 2 :(得分:0)

MsTest框架在失败的断言上抛出异常。传播出单元测试方法是导致测试失败的原因。如果要继续执行失败的断言,只需处理该异常并防止它转义该方法。