Я пытаюсь определить способ работы с тестовой базой данных (в SQL Server) для нашего интеграционного тестирования.
Моя идея состояла в том, чтобы сделать эти шаги при запуске сборки интеграционного теста:
- создать полностью пустую базу данных
- запустить сценарий «создание объектов базы данных» для создания всех соответствующих объектов базы данных (таблицы, представления, последовательности и т. д.)
- заполнить «базовые данные» (поиск значений и т. д.)
- сделать снимок базы данных, называемый
(db)_Basis
«базовой линией» для будущих интеграционных тестов
Теперь перед каждым тестовым классом (содержащим 1-n тестов) я планировал просто выполнить «восстановление из моментального снимка», чтобы вернуться к четко определенному, более или менее «пустому» состоянию базы данных. Работает как шарм до сих пор.
Однако существует ряд интеграционных тестов, которые должны работать с большой тестовой базой данных - поэтому я надеялся сделать это перед каждым из этих тестовых тестов (классы с n отдельными тестами)
- восстановить базу данных из
(db)_Basis
снимка - вставить эти 50'000 + строк данных в базу данных
- создать еще один моментальный
(db)_With_Testdata
снимок
а затем для каждого теста сбросьте базу данных до четко определенной (db)_With_Testdata
версии снимка, запустите тесты, проверьте результат и так далее.
Проблема в том, что у меня не может быть двух снимков базы данных одновременно - как только я это сделаю, я не смогу восстановить свою базу данных ни к одному из них .... Я продолжаю получать эту ошибку:
Сообщение 3137, уровень 16, состояние 4, строка 9
База данных не может быть восстановлена. Неправильно указаны имена основного или моментального снимка, все остальные моментальные снимки не были удалены или отсутствуют файлы.Сообщение 3013, уровень 16, состояние 1, строка 9
RESTORE DATABASE завершается ненормально.
Это действительно, как работают снимки базы данных SQL Server? Кажется ужасно ограничивающим ..... Я бы понял, если бы я не мог вернуться непосредственно к исходному снимку "(db) _Basis", может быть - но только потому, что у меня теперь есть два снимка, я даже не могу вернуться к самому последнему ?!?!?