В прошлом я сделал несколько вещей, чтобы ускорить тестирование интеграции баз данных. Первое, что я сделал, это то, что у меня появился скрипт sql, который фактически создает всю базу данных с нуля. Этого легко добиться, используя такой инструмент, как Red-Gate SQL Compare для пустой базы данных.
Во-вторых, я создал скрипт, который удалил все объекты базы данных из существующей базы данных.
Тогда мне нужен был скрипт, который заполнял базу данных тестовыми данными. Опять же, просто создать с помощью инструментов Red-Gate. Вам не нужно / не нужно тонны данных здесь, просто достаточно, чтобы покрыть ваши тестовые случаи.
С этими элементами я создал один тестовый класс со всеми моими операциями только для чтения. В начале этого класса я очистил локальный экземпляр SQL Server Express, запустил скрипт create, а затем запустил скрипт populate. Это обеспечило правильную инициализацию базы данных для всех тестов только для чтения.
Для тестов, которые фактически манипулируют базой данных, мы просто выполнили ту же маршрутизацию, что и выше, за исключением того, что мы делали это при тестировании init, а не в классе init.
Очевидно, что чем больше у вас тестов на манипулирование базой данных, тем дольше будут выполняться все ваши тесты. Если это становится неуправляемым, вам следует рассмотреть возможность категоризации ваших тестов и выполнения только того, что необходимо локально, и запуска полного пакета на сервере непрерывной интеграции.