我很想知道在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))));
我只是想弄清楚以前模仿我们以前所拥有的东西的最好方法,而不必重构我们所有的测试。
答案 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
框架在失败的断言上抛出异常。传播出单元测试方法是导致测试失败的原因。如果要继续执行失败的断言,只需处理该异常并防止它转义该方法。