У нас довольно много логики в хранимых процедурах TSQL. Будучи большим поклонником автоматических тестов, я начал писать автоматические тесты для хранимых процедур.Тестирование логики хранимых процедур
Я тестирую хранимые процедуры, вызывая их из проекта C#. Я делаю все тесты касательно базы данных наследуемыми от базового класса, гарантирует, что тест выполняется в TransactionScope, который никогда не выполняется. Есть несколько вопросов, связанных с этим:
- Тесты медленны по сравнению с тестами, которые не касаются базы данных, но мало что можно сделать по этому поводу.
- Иногда я сталкиваюсь с проблемами FK, когда хочу получить базу данных в состояние, в котором я нуждаюсь, чтобы она была до запуска тестовой логики. Например. когда мне нужно обрезать таблицу, на которую ссылается FK, вы не можете этого сделать. Мне нужно также избавиться от строк в таблице ссылок.
- Иногда мне нужно написать новую хранимую процедуру или запрос, чтобы получить базу данных в том состоянии, в котором она вам нужна. С другой стороны, я знаю, что мне нужна подобная процедура позже для новых функций в любом случае.
Несмотря на эти недостатки, я по-прежнему предпочитаю писать тесты для логики хранимых процедур, так как у нас довольно много логики в хранимых процедурах. Используете ли вы аналогичный подход, что-то совершенно другое (например, TSqlUnit), или вы не испытываете испытания sprocs?
Это удобный список причин, почему хранимые процедуры много боли при относительно небольшой стоимости. –
Раньше я был прочно закрепился в лагере СП, но мой разум изменился. Сохраненные procs для CRUD просто громоздки; с OR-образцами и параметризованными встроенными запросами хранимые процедуры кажутся менее важными. – vfilby
К сожалению, SP - это то, что я должен использовать, и это не изменится. Я боюсь. – trendl