【发布时间】:2015-10-02 06:38:50
【问题描述】:
我构建了一个测试驱动的应用程序,它将平面文件分类为父子层次结构。现在我想为我自己的排序创建一个非常通用的测试。为此,我想生成一些测试数据,然后对其进行排序。
将被排序的对象将如下所示:
public interface IHierarchicalUnitWithChildren
{
string Id { get; }
string ParentId { get; }
IList<IHierarchicalUnitWithChildren> Children { get; set; }
}
但我不想自己创建测试对象。我希望这是由代码生成的,例如:
_items = new List<IHierarchicalUnitWithChildren>();
Random random = new Random();
for (int i = 1; i < 1000; i++)
{
var item = new HierarchicalUnitMock()
{
Oid = i.ToString(),
Children = new List<IHierarchicalUnit>(),
};
// We need a couple of roots.
if (i%100 != 0)
{
item.Poid = random.Next(1, 100).ToString();
}
_items.Add(item);
}
我可以轻松生成一千个项目,但我还需要给它们一个有效的父级。我怎样才能确保我正在创建一个有效的结构,其中我有几个根并且所有孩子都有有效的父母。
任何项目都不应该有一个父级是其自身的子级(或孙级),从而使其成为无限的层次结构。
还是我认为这一切都错了?测试是否应该始终包含静态数据?
更新:
有没有办法通过智能循环来做到这一点,它总是生成相同的数据?这样测试用例总是一样的吗?
【问题讨论】:
标签: c# unit-testing hierarchical-data