繁体   English   中英

你在测试中放了多少个断言?

[英]How many assert do you put in a test?

我的想法是测试应该只有一个断言。但是有时很难决定我是否需要对其严格或依赖。

让我们举个例子,我有一个有地址的客户。 地址 Class 具有 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"));

在测试方法时,您通常会做什么,并且重要的是您知道属性已被填充,因为它们将发送给第三方?

感谢您的任何建议

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

在这种情况下,您可以摆脱许多 Assert,一个重要原因是如果一个测试失败,您的测试将失败,但您也会知道哪个 Assert 失败。 这取决于您想要的测试粒度。 如果您想使用来自数据库的信息测试可能填充 object 的代码,您可能需要多个断言。 如果您的代码的主要部分是通过其他方式获取地址,那么您可能想单独测试地址部分。 这完全取决于情况。 通常你想看看你的大部分逻辑在哪里以及需要测试什么。

测试最重要的是测试。 任何测试都比没有测试好。 如果一些花哨的规则告诉你如何把它做得漂亮,那么如果它让你非常恼火以至于你很快就不再写 [real] 了,它还有什么价值?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM