为了账号安全,请及时绑定邮箱和手机立即绑定

(什么时候)使用 FluentAssertions 是个好主意?

(什么时候)使用 FluentAssertions 是个好主意?

C#
MMMHUHU 2022-11-22 16:49:13

我正在重写一个C# .NET 项目,目前正在计划我将如何进行测试。

在阅读完所有内容后,我将安装XUnit 框架(这是第一次——我对 MSTest 更有经验)。现在我想知道我是否应该将它与FluentAssertions(我以前也从未使用过)结合起来,或者编写纯 XUnit 测试。

乍一看,FluentAssertions 听起来既书呆子又时尚,但我不确定它是否真的会让我编写出可读性最好的代码,以及它在复杂测试中的扩展性如何。

因此,我正在寻找您的经验和论据。[何时](做 | 会)使用 FluentAssertions?我很好奇。


查看完整描述

2 回答

?
呼啦一阵风

TA贡献1527条经验 获得超5个赞

流利主要是关于可读性和便利性。

如果您要编写多个单元测试,我建议您使用它。我最近遇到了将对象“a”和“b”映射到对象“c”的情况,我想通过单元测试来验证映射器。
因此,我创建了一个“expectedObject”,其中包含对象“c”在映射后应包含的所有属性。
由于我没有编写比较器,也不需要比较器,因此比较对象“c”和“expectedObject”以断言它们包含相同的数据会非常麻烦。所讨论的对象包含许多属性,而这些属性又具有许多属性。

但是用流利的我可以简单地写

c.Should().BeEquivalentTo(expectedObject);

这比一连串的内容更容易阅读Assert.AreEqual(),在这种情况下,更重要的是,写起来也快得多。


查看完整回答
反对 回复 2022-11-22
?
慕盖茨4494581

TA贡献1574条经验 获得超11个赞

Fluent Assertions 是一个 Nuget 包,我在我的项目中一直使用了大约 6 年。拿起并开始使用非常简单。大多数人可以在 5-10 分钟内掌握它,这将使阅读单元测试更容易一些。Fluent Assertions 是免费的,因此试用它真的不会犯规。我想我现在已经向 10 多个团队介绍了 Fluent Assertions,到目前为止还没有人抱怨过。大多数团队不使用它的最大原因就是缺乏接触它的机会。使用标准方法,单元测试可能类似于以下内容:


[TestMethod]  

public void Example_test()  

{  

    var actual = PerformLogic();

    var expected = true;  

    Assert.AreEqual(expected, actual);  

}  

此测试没有任何问题,但您需要花一两秒钟来了解发生了什么。相反,使用 FLuent Assertations,您可以像这样编写相同的测试:


[TestMethod]  

public void Example_test()  

{  

    var result = PerformLogic();

    result.Should().BeTrue();  

}  

希望您能看到第二个示例的阅读时间要少得多,因为它读起来更像是一个句子而不是 Assert 语句。从根本上说,这就是 Fluent Assertions 的全部,与 Assert 语句相比,许多扩展方法可以更轻松地阅读单元测试。我希望你能理解为什么它如此容易上手。您需要做的就是在结果变量中获取测试结果,使用 Should() 努力,然后使用 Fluent Assertions 其他扩展来测试您的用例。简单的!


http://www.jondjones.com/c-sharp-bootcamp/tdd/fluent-assertions/what-is-fluent-assertions-and-should-i-be-using-it


查看完整回答
反对 回复 2022-11-22
  • 2 回答
  • 0 关注
  • 10 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信