Мы используем MS SQL Server и C#. Наша база данных находится под контролем источника, и я расскажу вам некоторые детали нашей реализации. Мы реализовали две операции:
Экспорт базы данных в текстовые файлы. Файлы схемы базы данных: table.sql Relations.sql views.sql ... и файлы содержимого таблицы: Data / table1.txt Data / table2.txt ... Изменения в базе данных легко просмотреть с помощью журналов системы управления версиями, потому что все эти файлы имеют простой текстовый формат. Реализация основана на классах из пространства имен Microsoft.SqlServer.Management.Smo.
Импортируйте базу данных из этих текстовых файлов. Реализация проста - просто выполните инструкции sql из файлов * .sql, а затем выполните несколько вставок.
Итак, у нас есть два bat-файла: create-test-databse.bat и export-test-database.bat. Когда разработчику нужна новая тестовая база данных, он просто запускает bat-файл и ждет минуту. Каждый функциональный тест, которому нужна база данных, создает новую базу данных, использует ее, а затем уничтожает. Но надо сказать, что это не очень быстрая операция. :(
Итак, какие инструменты ВЫ используете, чтобы поставить свою базу данных под контроль версий? Я имею в виду, например, как реализовать операции «создать тестовую базу данных» и «экспортировать тестовую базу данных»?





Мы используем Visual Studio для специалистов по базам данных. Не выходи из дома без него.
Я использую VSTS для БД Профи. Вы указываете ему свой SQL-сервер, и он анализирует вашу базу данных и создает для вас отдельные файлы. Вы даже можете заставить его генерировать для вас тестовые данные. Следующий выпуск будет включать поддержку сторонних поставщиков (например, Oracle, MySQL, DB2).
Действительно замечательная функция здесь - это проверка. Мы обнаружили, что части нашей базы данных были полностью повреждены (они были рудиментарными, больше не использовались кодом). Это в основном позволяет развернуть вашу базу данных по запросу.
Я думаю, вы задаете здесь два вопроса. Во-первых, как поставить вашу базу данных под контроль версий. Ваше решение интересно, и я также использовал Visual Studio Team Edition для специалистов по базам данных (вот учебник, который я написал по TDD хранимых процедур, используя его)
Во-вторых, как настроить базу данных для интеграционных тестов. Настройка и удаление всей базы данных кажется излишним. Есть несколько решений. Я использовал DBFit. Рой Ошеров недавно опубликовал инструмент под названием XtUnit, с которым я еще не играл. И, конечно же, вы всегда можете настроить свои тесты на запуск транзакции в SetUp и откат во время разрыва.