2016-03-07 2 views
2

фонSQL Server Application - Восстановление базы данных в исходное состояние

Мне нужно написать несколько тестов интеграции в C# (около 120 из них) для приложения C#/SQL Server. Теперь, изначально перед любым тестом, база данных уже будет там, причина, по которой это будет происходить, заключается в том, что будет запущено множество скриптов для ее настройки (около 20 минут работы). Теперь, когда я запускаю свой тест, будет обновлено несколько таблиц (операции CRUD). Напр. в 10-11 таблицах будет добавлено несколько строк и скажем в 15-16 таблицах, несколько строк будут обновлены, а в 4-5 таблицах будут удалены несколько строк.

Проблема

After каждый тест запускается, the database потребности быть reset в его исходное состояние. Как я могу это достичь?

Bad Solution

После каждого прогона теста, re-run база данных creation scripts (20 минут времени выполнения). Поскольку будет около 120 тестов, это доходит до 40 часов, что не является вариантом. Во-вторых, есть процесс, который имеет несколько соединений, открытых против этой базы данных, поэтому базу данных нельзя отбрасывать/воссоздавать.

Хорошее решение?

Я хотел бы знать, есть ли другой способ решения этой проблемы? Другая проблема заключается в том, что для каждого из этих тестов я даже не знаю, какие таблицы будут обновлены, и мне придется вручную перейти и проверить, чтобы какие таблицы были обновлены в любом случае, если бы я был удален, верните базу данных это оригинальное состояние вручную, записывая запросы.

+4

взять резервную копию в начале, восстановить между каждым тестом? – BugFinder

+0

как @BugFinder сказал создать резервную копию с пустой базой данных и использовать скрипт для восстановления перед тестами –

+0

@BugFinder и Себастьян - извините, просто изменил вопрос. Существует процесс, который имеет несколько соединений, открытых против этой базы данных, поэтому нельзя удалять/воссоздавать базу данных. Это приведет к тому, что процесс завершится. – VVV

ответ

3

Вы должны взглянуть на возможности, которые MSSQl дает вам с моментальным снимком вашей базы данных. Это потенциально намного быстрее, чем возврат к резервному копированию или воссозданию базы данных.

Managing a test database

В среде тестирования, это может быть полезно при повторном запуске протокола испытаний для базы данных содержат одинаковые данные в начале каждого раунда тестирования. Перед запуском первого раунда разработчик приложения или тестер может создать моментальный снимок базы данных в тестовой базе данных. После каждого тестового прогона база данных может быть быстро возвращена в прежнее состояние, возвращая моментальный снимок базы данных.

+0

Было бы полезно предоставить некоторый код, чтобы показать, как это можно достичь. Ссылки могут меняться со временем. –

Смежные вопросы