【发布时间】:2011-07-20 05:09:37
【问题描述】:
我的想法是测试应该只有一个断言。但是有时很难决定我是否需要对此严格或依赖。
让我们举个例子,我有一个客户的地址。 Address 类具有 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"));
在测试方法时您通常会做什么,并且重要的是您知道属性已被填充,因为它们将被发送给第三方?
感谢任何建议
【问题讨论】:
-
我相信之前有人问过这个问题...
-
这种语法有点奇怪。是错字吗?你的意思是 Assert.That(whatever, Is.EqualTo(x)) 吗?
-
就我个人而言,我的观点是“见鬼去吧”;我对完成工作的测试感兴趣;我们的目的不是为了拥有美丽的纯粹测试,这些测试是闪亮的光柱。任何错误都会告诉你(简单地通过“预期的伦敦”或其他方式)哪个子组件失败了——如果你修复了这个错误并且另一个弹出了——就这样吧。如果有任何不确定性,请务必使用
message参数,这样您就知道哪一行中断了,但同样 - 堆栈跟踪通常会告诉您确切的位置。 -
@Ritch Melton:有很多单元测试框架,每个框架都有自己流畅的 API。
-
@Jason - 嗯好的。我很确定 PostCode 不等于 Equal 约束。
标签: c# unit-testing