我正在为我的测试项目使用 MStest (.net core),有没有办法在失败时继续执行测试?

Posted

技术标签:

【中文标题】我正在为我的测试项目使用 MStest (.net core),有没有办法在失败时继续执行测试?【英文标题】:I am using MStest (.net core) for my test project, Is there a way to continue the test execution on failure? 【发布时间】:2020-12-29 02:34:05 【问题描述】:

我希望我的测试在断言失败后继续下一行。我试过“try catch block”,但测试没有失败。我们有什么可以在流利的断言 [https://fluentassertions.com/] 中解决这个问题的方法,或者在代码中处理这个问题吗?

【问题讨论】:

你想要完成什么,你有一个例子可以展示吗? try/catch 块将抑制任何测试失败并防止测试出现失败的情况。您是否正在尝试进行一些清理工作?为此,您应该考虑使用 try/finally 块、测试清理方法或测试类清理方法。 我的测试方法中有多个断言语句,而不是按顺序,现在如果断言失败,我想继续下一行。 [TestMethod] public void Test() int a;断言();诠释 b;断言() 我知道多个断言,但我正在寻找与 mstest c# 中的 (blogs.perficient.com/2016/01/13/…) 等软断言等效的东西 【参考方案1】:

您正在搜索 AssertionScope 的 FluentAssertions 的声音。

using (new AssertionScope())

    5.Should().Be(10); // will fail but not throw
    DoSomeOtherStuff();
 // assertion will raise exception

将收集所有失败的断言,直到 AssertionScope 被释放。

【讨论】:

第一次验证失败,我想继续下一个 [TestClass] public class UnitTest1 [TestMethod] public void TestMethod1() int a = 5;诠释 b = 6;验证(a,b); a = 5; b = 5;验证(a,b); public void Verify(int a, int b) using (new AssertionScope()) a.Should().Be(6); // 会失败但不会抛出 b.Should().Be(5); 不幸的是,您的要求仍然有点不清楚。如果(至少)一个条件错误,单元测试最终将失败。在 AssertionScope 的帮助下,您可以根据需要延迟失败。这对你来说还不够吗? 你是如何解决这个问题的,@vigneshkec?我的回答有帮助吗,请投票。如果没有,您能否分享您的解决方案或更新您的问题? 我写了一个带有try-catch块的自定义断言函数,并且在catch中,我将向Testcontext属性添加一个异常。在测试 [TestCleanup] 结束时,我添加了一个条件来检查测试上下文中的新属性,如果发现我将打印并且测试失败。断言范围在我的情况下不起作用,因为我的断言不是按顺序排列的。

以上是关于我正在为我的测试项目使用 MStest (.net core),有没有办法在失败时继续执行测试?的主要内容,如果未能解决你的问题,请参考以下文章

使用 mstest,我可以针对我支持的每种语言运行我的单元测试套件吗?

在 .net 框架中进行测试

Visual Studio 2015 MSTest 无法运行负载测试

如何从 MSTest 对站点进行灯塔审计

使用 MSTEST 和 Selenium 在并行 Web 测试中中止线程

如何使用 MSTest 测试异步代码