Я создаю тестовое приложение, которое будет сортировать плоский файл в иерархии parent-child. И теперь я хочу создать довольно общий тест для моей собственной сортировки. Для этого я хочу сгенерировать некоторые тестовые данные, которые затем сортирую.Создание иерархии объектов для теста
Объект, который будет отсортирован будет выглядеть примерно так:
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