1
我構建了一個測試驅動的應用程序,該應用程序將一個平面文件排序爲父子層次結構。現在我想爲自己的排序創建一個非常通用的測試。爲此,我想生成一些測試數據,然後再進行分類。爲測試創建對象層次結構
將被排序會是這個樣子的對象:
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);
}
我可以很容易地產生一千個項目,但我還需要給他們一個有效的父。我如何確保我正在創建一個有效的結構,我有幾個根,所有的孩子都有父母。
沒有項目應該有自己的孩子(或孫子)的父母,從而使其成爲一個無限的層次。
或者我在想這一切都是錯的?應該測試總是有靜態數據?
UPDATE:
有沒有什麼辦法了智能迴路要做到這一點,總是產生相同的數據?所以測試用例總是會一樣的?
嗯,我準備同意你的意見。正如你所說,測試用例每次都不一樣,這是測試的關鍵組件之一。 – smoksnes