У нас есть немного логики в хранимых процедурах TSQL.Будучи большим поклонником автоматизированных тестов, я начал писать автоматизированные тесты для хранимых процедур.
Я тестирую хранимые процедуры, вызывая их из проекта C #.Я делаю все тесты, касающиеся базы данных, наследуемой от базового класса, чтобы гарантировать, что тест выполняется в TransactionScope, который никогда не фиксируется.Есть несколько проблем, связанных с этим:
- Тесты медленны по сравнению с тестами, не касающимися базы данных, но я полагаю, с этим мало что можно сделать.
- Иногда я сталкиваюсь с проблемами FK, когда хочу получитьбаза данных в состояние мне нужно, чтобы быть до запуска тестовой логики.Например, когда мне нужно обрезать таблицу, на которую ссылается FK, вы не можете этого сделать.Мне также нужно избавиться от строк в ссылочной таблице.
- Иногда мне нужно написать новую хранимую процедуру или запрос, чтобы привести базу данных в нужное вам состояние. С другой стороны, я часто нахожуВ любом случае, мне потребуется аналогичная процедура позже для новых функциональных возможностей.
Несмотря на эти недостатки, я по-прежнему предпочитаю писать тесты для логики хранимых процедур, поскольку у нас есть немало логики в хранимых процедурах.Используете ли вы похожий подход, что-то совершенно другое (например, TSqlUnit), или вы не беспокоитесь о тестировании sprocs?