Тестирование логики хранимых процедур - PullRequest
0 голосов
/ 18 февраля 2010

У нас есть немного логики в хранимых процедурах TSQL.Будучи большим поклонником автоматизированных тестов, я начал писать автоматизированные тесты для хранимых процедур.

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

Несмотря на эти недостатки, я по-прежнему предпочитаю писать тесты для логики хранимых процедур, поскольку у нас есть немало логики в хранимых процедурах.Используете ли вы похожий подход, что-то совершенно другое (например, TSqlUnit), или вы не беспокоитесь о тестировании sprocs?

1 Ответ

0 голосов
/ 18 февраля 2010

Я думаю, что есть преимущество в тестировании ваших хранимых процедур из кода, поскольку они хранят все тесты в одном месте, где их можно легко запустить на компьютере разработчика или на компьютере сборки.

Хотя это идет вразрез с принципами модульного тестирования (не настраивая и не разбирая каждый тест), я использую копию базы данных исключительно для тестирования и скрипт, который устанавливает данные так, как мне нужно. Этот скрипт может быть перезапущен по мере необходимости для чистой тестовой базы данных. Недостатком этого является постоянное обновление скрипта, так как вы упоминаете, что внешние ключи - это боль. Я использую плагин SQL Server Management Studio для сценария вставки данных, чтобы упростить этот процесс.

Я считаю, что это плагин, который я использую: http://sqlblogcasts.com/blogs/seanprice/archive/2007/08/28/data-scripter-add-in-for-management-studio.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...