你在测试中加了多少断言?

时间:2011-07-20 05:09:38

标签: c# unit-testing

我认为测试应该只有一个断言。但有时很难确定我是否需要严格要求或依赖。

让我们举一个例子,我有一个地址的客户。 地址类具有City-Street-PostCode-Country等...属性

我想测试创建客户时是否填充了地址。

我应该为每个属性或多个断言创建一个测试

Assert.That(customer.Address.City,Is.EqualTo("London"));
Assert.That(customer.Address.Street, Is.EqualTo("StreetOne"));
Assert.That(customer.Address.Postcode, Is.EqualTo("MyPostCode"));

在测试某个方法时,您通常会做些什么,并且知道属性已经填充到第三方时很重要?

感谢任何建议

4 个答案:

答案 0 :(得分:3)

我想说,这取决于。在你的情况下,我真的没有看到它的问题,因为你基本上测试一个功能(创建一个客户)。甚至NUnit也可以通过TestCase属性为这类事物提供快捷方式。

答案 1 :(得分:0)

在这种情况下,你可以逃脱许多断言,一个重要原因是如果一个测试失败你的测试会失败,但你也会知道哪个Assert失败了。这取决于您想要的测试粒度。如果您想测试可能使用数据库中的信息填充该对象的代码,您可能希望拥有多个断言。如果代码的主要部分是通过其他方式获取地址,那么您可能希望单独测试地址部分。这一切都取决于具体情况。通常,您希望了解大多数逻辑的位置以及需要测试的内容。

答案 2 :(得分:0)

测试最重要的是测试。任何测试都比没有测试好。如果某些花哨的规则决定了如何做到这一点的确切方法,如果它让你如此烦恼以至于你很快就不再写[真实]那么它的价值是什么?

答案 3 :(得分:0)

我也有“一次测试”的想法 - > “一个断言”......但是!

如果断言与相同的测试用例相关,则没有问题可以提出更多。就像上面的例子一样,我不知道你是否只用3个断言检查一个案例中的完整地址行;