使用 ForEach 进行单元测试
本文关键字:单元测试 ForEach 使用 | 更新日期: 2023-09-27 18:30:53
假设:"personList"是 Person 对象的列表
"代理"是一个对象,可以提供有关商店对象的活动(人员的属性)
"GetShopActivity"返回一个人的购物活动对象列表
我在测试项目中有以下行:
personList.ForEach(p => new List<Person>(p.Shops)
.ForEach(t=> Assert.IsNotNull(agent.GetShopActivity(t, startDate, endDate))));
我怎样才能让它变得更好?
你可能有很多事情可以做,但首先要做的是让它更具可读性。也许是这样的:
var nullActivities =
from p in partnerList
from t in p.Tenants
let activity = agent.GetShopActivity(t, startDate, endDate)
where activity == null
select activity;
Assert.Empty(nullActivities);
此外:
你可能想考虑一下
- 测试应该是简单的(即它的圈复杂度应该为 1)。
- 阅读测试的人应该立即清楚正在测试的场景和行为(如果
startDate
和endDate
的值很重要,则给它们不那么通用的名称可能是有益的)。 - 最好只有一个断言,因为这样很容易知道测试失败时失败的位置。