Я столкнулся с подобной ситуацией.
Хранение данных в БД и их сохранение в прежнем состоянии не являются в идеале модульными тестами. Это интеграционные тесты.
Чтобы выполнить интеграционные тесты (операции вставки / обновления) без влияния на фактические данные , я бы предложил следующее
1. Используйте другую базу данных (измените имя фактической БД), и пусть схема останется такой же, как и фактическая БД.
2. Направьте юнит-тесты на вновь созданную БД.
3. Теперь, как нам создать новую БД для автоматизированного выполнения одних тестов?
Ответ. Перечислите сценарии SQL в пакетном файле, например, вот так (здесь я предполагаю, что вы используете SQL SERVER)
Например, sqlcmd -i c: \ data \ runcripts \ InventoryMonthEnd.sql
Укажите пакетный файл, который подает этот оператор SQL для выполнения в процессе MSBuild.
Пример задачи MSBuild.
<ItemGroup>
<StoredProcScripts Include="$(RelativeSPDir)/*.sql" />
</ItemGroup>
<Target>
<Exec Command="isql -E -n -b -d DBName -i %(StoredProcScripts.Identity)" Condition="'%(StoredProcScripts.Identity)' != ''"/>
</Target>