Решение простое - создаешь мок БД для тестов.
1. Тест начинается - запускаешь БД и заполняешь данными необходимыми (как сказал
Василий Банников можно сделать дамп с удаленными чувствительными данными)
2. После каждого теста необходимо выполнить откат - если какие-то данные были добавлены/удалены/изменены
3. При завершении тестирования удаляешь БД
На мой взгляд, здесь просто много инфраструктурной работы. Полезные инструменты:
- Testcontainers - запускаешь БД в контейнере. Сам ей пользовался, есть много шаблонов для разных БД, чтобы с нуля не писать все. Можно также скрипт инициализации (схема, дамп) добавить - вот тебе и настройка
- В зависимости от фреймворка есть разные механизмы запуска кода после каждого тест-кейса. Если про xUnit, то:
- Тестовый класс реализует IDisposable - выполняется после каждого тест-кейса. Можно тут реализовать логику отката БД
- Для инициализации самого контейнера (чтобы каждый раз не запускать заново) - IClassFixture
Также никто не отменял внешний инстанс БД использовать - просишь дба создать отдельную БД специально для тестов, просто запускать теперь параллельно не получится