Для модульного тестирования я обычно не загружаю данные заранее - каждый тест предназначен для работы с источником данных, который может содержать или не содержать уже существующие записи, поэтому каждый тест записывает все записи, необходимые для завершенияtest.
При выборе значений для отправки в базу данных я использую GUID (или другие случайные значения), когда это возможно, поскольку это гарантирует, что значения в базе данных являются уникальными (например, если вы создаете кого-то с именем «Mr XY», онполезно знать , что поиск "X" должен возвращать только 1 результат, и что нет никаких шансов, что вы случайно натолкнулись на кого-то еще в базе данных, чья фамилия случается , чтобы быть Y)
Часто при модульном тестировании я тестирую методы, которые модифицируют данные, наряду с методами, которые читают данные, и поэтому мои модульные тесты используют один и тот же API (тот, который тестируется) для записи в базу данных.(Это хорошо , если каждый модульный тест охватывает определенную область функциональности, но это не является абсолютно необходимым)
Если тестируемый API не имеет методов для записи в базу данных, янаписать свой собственный набор вспомогательных функций - точная структура будет зависеть от источника данных, но в качестве примера я часто использую LINQ to SQL.