Kno*_*eus 5 .net c# unit-testing xunit fluent-assertions
我正在重写一个C# .NET 项目,目前正在计划如何进行测试。
在我阅读完所有内容之后,我将安装XUnit 框架(这是第一次——我对 MSTest 更有经验)。现在我想知道我是否应该将它与FluentAssertions(我以前也从未使用过)结合起来,或者更确切地说是编写纯 XUnit 测试。
乍一看,FluentAssertions 听起来很书呆子和时尚,但我不确定它是否真的会让我编写可读性最好的代码,以及它在复杂测试中的扩展性如何。
因此,我正在寻找您的经验和论点。[何时](会 | 会)您使用 FluentAssertions?我很好奇。
Fluent 主要是关于可读性和便利性。
如果您要编写多个单元测试,我建议您使用它。我最近遇到了将对象“a”和“b”映射到对象“c”的情况,我想通过单元测试来验证映射器。
因此,我创建了一个“expectedObject”,其中包含对象“c”映射后应包含的所有属性。
由于我没有编写比较器,也不需要比较器,因此将对象“c”与“expectedObject”进行比较以断言它们包含相同的数据会非常麻烦。所讨论的对象包含许多属性,而这些属性又具有许多属性。
但是使用 Fluent 我可以简单地写
c.Should().BeEquivalentTo(expectedObject);
这比一连串的更容易阅读Assert.AreEqual(),在这种情况下,更重要的是,编写速度也更快。
Fluent Assertions 是一个 Nuget 包,我一直在我的项目中使用了大约 6 年。拿起并开始使用非常简单。大多数人可以在 5 到 10 分钟内掌握它,这将使阅读单元测试更容易一些。Fluent Assertions 是免费的,所以尝试它真的没有派对犯规。我想我现在已经将 Fluent Assertions 引入了 10 多个团队,到目前为止没有人抱怨。大多数团队不使用它的最大原因只是缺乏接触它。使用标准方法,单元测试可能类似于:
[TestMethod]
public void Example_test()
{
var actual = PerformLogic();
var expected = true;
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
这个测试没有任何问题,但你需要花一两秒钟来了解发生了什么。相反,使用 Fluent 断言,您可以像这样编写相同的测试:
[TestMethod]
public void Example_test()
{
var result = PerformLogic();
result.Should().BeTrue();
}
Run Code Online (Sandbox Code Playgroud)
希望您能看到第二个示例花费更少的时间来阅读,因为它读起来更像是一个句子而不是 Assert 语句。从根本上说,这就是 Fluent Assertions 的全部内容,与 Assert 语句相比,许多扩展方法使您的单元测试更易于阅读。我希望你能理解为什么它这么容易上手。您需要做的就是在结果变量中获取测试结果,使用 Should() 执行,然后使用 Fluent Assertions 其他扩展来测试您的用例。简单的!
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |