- создать базу данных в памяти (я предпочитаю эту опцию. Я проверил SQLite. Однако, похоже, он не поддерживает процедуры)
SQL Server не поддерживает параметр в памяти
- создать тестовую базу данных (не вариант в моей ситуации)
Обычно это лучший вариант для тестирования реальной базы данных.
Тесты должны выполняться изолированно друг от друга, чтобы получить согласованный и надежный результат.
Никто не сломает вашу тестовую базу данных, потому что вы запустите сценарий для ее создания и заполните необходимые данные перед тестированием.
- делать откат после каждого юнит-теста (но есть некоторые процедуры, содержащие коммит, поэтому даже если я откатюсь в c #, некоторая часть все равно будет
быть преданным)
Попробуйте использовать TransactionScope Class , который должен откатывать внутренние транзакции, совершенные во время теста.
Но если вы используете какую-то базу данных, которая используется другими, ваши тесты могут быть неудачными, потому что кто-то внес изменения.