Полагаю, я приму участие, поскольку мне пока не нравятся некоторые ответы.
Независимо от того, назовете ли вы это «модульным тестом» или «интеграционным тестом» или «суперкалифрагистическим экстремальным тестом», в данном случае не имеет значения один бит; есть только один действительный тест для доступа к данным компонентов и что он должен проверить его на фактических данных . Не данные производства , очевидно, но их разумное факсимиле.
Самое первое, что вам нужно сделать, это получить саму базу данных под контролем исходного кода . К сожалению, для этого нет никаких оснований; В некоторых версиях VSTS Microsoft идет своим путем, но конечного результата все еще не хватает. По крайней мере, в сегодняшнем мире вам придется выполнять большую часть этой работы самостоятельно. Но сделайте это серьезно - вы не пожалеете об этом, когда произойдет серьезное обновление, и вам нужно будет откатить базу данных.
То, что вы помещаете под контроль исходного кода, должно быть всем необходимым для генерации самой новой схемы, обычно сценария базовой линии, плюс сценарии «данных конфигурации» (т. Е. Содержимое таблиц перечисления) и сценарии обновления, чтобы отразить последние изменения схемы. Это дает вам почти все, что вам нужно для проведения "живого" тестирования во временной базе данных; вашему тесту нужно только загрузить эти сценарии из системы контроля версий и запустить их на тестовом сервере и / или в другом экземпляре базы данных, обычно используя объекты управления SQL для запуска указанных сценариев (SMO может обрабатывать операторы GO
и и тому подобное; обычный SqlConnection
не может).
Различные инструменты могут помочь вам с генерацией тестового контента в тестовой базе данных. Вероятно, наиболее популярным является Генератор данных SQL Red Gate . Эти инструменты также могут генерировать сценарии для создания данных, которые вы будете использовать в своих тестах. Или, если вы захотите, вы можете очистить данные из вашей производственной базы данных и использовать SQL Server Management Studio для создания сценария для любых данных, которые вы выберете для тестирования. В любом случае, сохраните ваши сценарии тестовых данных в системе управления версиями, так же, как сценарии схемы, и когда вам нужно протестировать DAL, загрузите эти сценарии после запуска экземпляра БД и используйте их для заполнения данных.
Я бы хотел, чтобы были единой платформой, которая сделала бы все это для вас, но с правильным набором инструментов, библиотек и хороших методов разработки, вы можете сделать это в гораздо менее болезненный процесс.