【问题标题】:I am using MStest (.net core) for my test project, Is there a way to continue the test execution on failure?我正在为我的测试项目使用 MStest (.net core),有没有办法在失败时继续执行测试?
【发布时间】: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/…) 等软断言等效的东西

标签: mstest fluent-assertions


【解决方案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] 结束时,我添加了一个条件来检查测试上下文中的新属性,如果发现我将打印并且测试失败。断言范围在我的情况下不起作用,因为我的断言不是按顺序排列的。
猜你喜欢
  • 2020-05-27
  • 2017-06-17
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 1970-01-01
相关资源
最近更新 更多