【发布时间】:2011-02-08 07:52:37
【问题描述】:
我正在研究 TDD 并在我当前的项目中进行试验。 我注意到我必须在我的测试中复制很多断言。 这是情况: 我有带有两个构造函数的 Order 类,第一个是默认的, 第二个有三个参数
Order(int customerId, int typeId, decimal amount)
在 OrderTests 类中,我正在检查作业是否运行良好
Assert.IsTrue(o.CustomerId == 5 && o.TypeId == 3 && amount == 500)
由于订单创建是复杂的过程,因此我有具有以下创建订单方法的订单服务类。
Order CreateOrder(int cusotmerId, int typeId, int amount, moreParams...)
OrderServiceTests 类对此方法进行了测试,我需要使用相同的断言来检查 Order 是否已在 CreateOrder 服务中正确创建。
Assert.IsTrue(o.CustomerId == 5 && o.TypeId == 3 && amount == 500)
- 在测试中有这样的重复可以吗?
- 在测试中提取具有相同断言的方法是否有意义,因为有时编号或重复的断言可能不止一个?还是这样的方法提取使测试不可读?
【问题讨论】:
-
据我了解,您正在尝试测试对象创建。为什么你需要这样做?有什么复杂的逻辑吗?
-
是的,正如我所写,创建对象图是一个复杂的过程
-
假设 Order 不是纯值对象/数据结构(在这种情况下,它可能太微不足道而无法失败/修复):您可以编写一个使用反射的辅助方法
AreAttributesEqual(expectedOrder, actualOrder, listOfAttributesToCompare)。如果您想始终比较所有属性,那就更简单了。
标签: unit-testing tdd nunit