xUnit:多个断言或软断言

如何在xUnit中找到多个断言或软断言?我发现Nunit具有以下功能,试图在xUnit中找到类似的选项。

Assert.Multiple(() =>
 {
   Assert.AreEqual(expectedResult1,actualResult1,"Mismatch in Score1!");
   Assert.AreEqual(expectedResult2,actualResult2,"Mismatch in Score2!");
   Assert.AreEqual(expectedResult3,actualResult3,"Mismatch in Score3!");
  });
zangc 回答:xUnit:多个断言或软断言

does not exist

  

我们可以做很多事情,但是由于许多原因,我们选择不这样做。原因包括:(a)实施和维护费用; (b)相互竞争的优先事项; (c)对功能的哲学异议。

     

在这种情况下,您违反了(c)。我们认为 单元测试框架 不应运行多个失败的断言。

xUnit通常比NUnit更自以为是,出于意识形态的原因,将不包括NUnit支持的内容。

,

如果您喜欢BDD /流利风格的断言,则可以考虑使用其中一个与xUnit完全兼容的库:

using (new AssertionScope())
{
   actualResult1.Should().Be(expectedResult1,"Mismatch in Score1!");
   actualResult2.Should().Be(expectedResult2,"Mismatch in Score2!");
}
var mrBurns = new Person { Name = null };
mrBurns.ShouldSatisfyAllConditions(
   () => mrBurns.Name.ShouldNotBeNullOrEmpty(),() => mrBurns.Name.ShouldBe("Mr.Burns"));
,

将您的测试用例放入 IEnumerable<T> 并使用 Assert.All<T>()

var expectations = new List<Tuple<object,object>>()
{
    new(expectedResult1,actualResult1),new(expectedResult2,actualResult2),new(expectedResult3,actualResult3),};
Assert.All(expectations,pair => Assert.Equal(pair.Item1,pair.Item2));
本文链接:https://www.f2er.com/3036602.html

大家都在问