如何在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!");
});发布于 2019-11-25 12:22:48
从xUnit 2开始,它是不存在。
我们可以做很多事情,但出于许多原因,我们选择不去做。这一原因包括:(a)执行和维护费用;(b)相互竞争的优先事项;(c)对特点的哲学反对。 在这种情况下,你违反了(c)项。我们不认为单元测试框架应该运行不止一个失败的断言。
一般来说,xUnit比NUnit更加固执己见,而且出于意识形态的原因,它不会包括NUnit支持的内容。
It 看来xUnit 3将支持这一点,使用Assert.Multiple。
发布于 2020-10-15 07:49:17
如果您喜欢BDD / fluent风格的断言,可以考虑使用这些库中的一个,这两个库都与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"));发布于 2021-04-05 22:10:18
将测试用例放入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://stackoverflow.com/questions/59031723
复制相似问题