我为什么要使用Assert类方法?

时间:2017-02-14 09:37:11

标签: c# .net unit-testing

我发现Assert类方法相当混乱而不是有用。我发现特别恼人的是微软的MSTest方法期望(或要求?)我向后写比较,i。即首先是常量/期望值,第二个是变量/实际值。这与自然语言相矛盾,因此与代码中的一般比较的许多编程指南相矛盾。

所以不要这样:

Assert.AreEqual(5, value, "Value is not correct.");

这有什么不对,更通常看的测试说明:

if (value != 5) Assert.Fail("Value is not correct.");

这就是所有代码的样子。这是每个程序员的眼睛训练,以便快速看到和理解的东西。其他断言方法可以很容易地用常规代码编写。

使用C#6' using static,你甚至可以放弃Assert.部分。

我无法在网上和Assert类文档中找到任何关于此的理由。

2 个答案:

答案 0 :(得分:7)

Assert.AreEqual(5, value, "Value is not correct.");中,您收到的消息将包含类似

的内容
  

预计5,取而代之的是

if (value != 5) Assert.Fail("Value is not correct.");中,邮件将

  

价值不正确。

由于没有导致断言失败的价值,女巫的信息量会少得多。

答案 1 :(得分:0)

MSTest使用非常常见的AAA模式(arrange-act-assert)。对于单元测试经验丰富的其他程序员来说,你的第二条指令的可读性会降低。此外,您需要在第二种情况下提供附加信息,您需要扩展消息并手动指定预期值和实际值,这需要更多编码,并且在第一种情况下可以避免。