【发布时间】:2011-05-29 14:04:41
【问题描述】:
我有以下算法:
给定一个帐户列表,我必须将它们公平地分配给系统用户。
现在,为了减轻用户的工作量,我不得不将他们分成几天。
因此,如果帐户有服务订单,则必须将它们插入到将在 547 天(一年半)内分发的列表中。如果帐户没有服务订单,则必须将它们插入到将在 45 天(一个半月)内分发的列表中。
我正在使用来自a question I asked before 的以下 LINQ 扩展:
public static IEnumerable<IGrouping<TBucket, TSource>> DistributeBy<TSource, TBucket>(
this IEnumerable<TSource> source, IList<TBucket> buckets)
{
var tagged = source.Select((item,i) => new {item, tag = i % buckets.Count});
var grouped = from t in tagged
group t.item by buckets[t.tag];
return grouped;
}
我可以保证它有效。
我的问题是我真的不知道如何对所有这些情况进行单元测试。
我可能有 5 个用户和 2 个帐户,这可能不足以拆分一年半甚至一个半月。
我可能正好有 547 个帐户和 547 个系统用户,因此每个帐户每天将由每个系统用户处理。
基本上我不知道我应该创建什么样的数据集,因为似乎有太多的选择,我应该断言什么,因为我不知道分布将如何。
【问题讨论】:
标签: c# unit-testing tdd nunit