首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xUnit :多个断言或软断言

xUnit :多个断言或软断言
EN

Stack Overflow用户
提问于 2019-11-25 12:20:37
回答 4查看 2.2K关注 0票数 8

如何在xUnit中找到多个断言或软断言?我发现Nunit的能力很差,试图在xUnit中找到类似的选项。

代码语言:javascript
复制
Assert.Multiple(() =>
 {
   Assert.AreEqual(expectedResult1, actualResult1, "Mismatch in Score1!");
   Assert.AreEqual(expectedResult2, actualResult2, "Mismatch in Score2!");
   Assert.AreEqual(expectedResult3, actualResult3, "Mismatch in Score3!");
  });
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-25 12:22:48

从xUnit 2开始,它是不存在

我们可以做很多事情,但出于许多原因,我们选择不去做。这一原因包括:(a)执行和维护费用;(b)相互竞争的优先事项;(c)对特点的哲学反对。 在这种情况下,你违反了(c)项。我们不认为单元测试框架应该运行不止一个失败的断言。

一般来说,xUnit比NUnit更加固执己见,而且出于意识形态的原因,它不会包括NUnit支持的内容。

It 看来xUnit 3将支持这一点,使用Assert.Multiple

票数 7
EN

Stack Overflow用户

发布于 2020-10-15 07:49:17

如果您喜欢BDD / fluent风格的断言,可以考虑使用这些库中的一个,这两个库都与xUnit完全兼容:

代码语言:javascript
复制
using (new AssertionScope())
{
   actualResult1.Should().Be(expectedResult1, "Mismatch in Score1!");
   actualResult2.Should().Be(expectedResult2, "Mismatch in Score2!");
}
代码语言:javascript
复制
var mrBurns = new Person { Name = null };
mrBurns.ShouldSatisfyAllConditions(
   () => mrBurns.Name.ShouldNotBeNullOrEmpty(),
   () => mrBurns.Name.ShouldBe("Mr.Burns"));
票数 2
EN

Stack Overflow用户

发布于 2021-04-05 22:10:18

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

代码语言:javascript
复制
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));
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59031723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档