2017-02-14 32 views
0

我发现Assert类方法相当混乱而不是有用的。我发现特别讨厌微软的MSTest方法期望(或要求?)我写回比较,我。即第一个是常量/期望值,第二个是变量/实际值。这与自然语言相矛盾,因此也与许多编程准则有关,用于代码中的一般比较。为什么我应该使用Assert类方法?

因此,不是这样的:

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

有什么不对的,更通常希望测试指令:

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

这是所有的代码看起来像。这就是每个程序员的眼睛都经过培训才能真正快速地看到和理解。其他的断言方法可以用普通的代码编写,就像一样容易。

随着C#6的using static你甚至可以离开Assert.部分。

我在网上和Assert类文档找不到任何推理。

+0

你知道吗[流利的断言](http://www.fluentassertions.com/)? –

+0

只需切换到NUnit,XUnit或任何其他单元测试框架;个人而言,我发现MSTest语法很好,需要先进行10次测试才能习惯,然后全部都是甜蜜的。 – zaitsman

+0

@RenéVogt不知道这一点,我发现在用自定义方法丢弃语言特征方面毫无意义。我的可读性较差,需要学习多余的东西。 – ygoe

回答

7

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

预计5,拿到3而不是

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

值是不正确的。

女巫信息量少得多,因为你没有导致断言失败的价值。

0

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

相关问题