2010-08-11 3 views
2

Когда я кодирую в .Net (C#), я использую NUnit и Rhino Mock для тестирования. Не сделали много кодирования базы данных (Store Procs). Как мы можем сделать TDD с кодировкой базы данных (Store Procs)?TDD с процедурами хранения

ответ

0

1) У вас есть фреймворк, который позволяет вам взять объект БД и сделать его копию. Это хорошо работает, когда у вас есть исходный код базы данных, включая определения таблиц, хранящиеся в файловой системе.

  • копия таблицы в базу данных temp. В том числе индексов и т.д ..

  • копия хранимой процедуры или триггера, который заменяет все имена DB Префикс таблицы/другой называемый ПЛов с временной базой данных

  • в состоянии предварительно заполнить таблицу с данными либо клонированными из существующую таблицу (с помощью фильтра) или подготовленный набор данных сохраняется, например, в качестве входного BCP файла

2) имеют структуру, которая загружает указанные таблицы испытаний с заданными данными испытаний, а затем клонирует все другие необходимые SP/код запуска

3) Имейте фреймворк, который выполняет клонированные хранимые процедуры и оценивает как возвращаемые из них результаты, так и данные, оставшиеся в таблице, в случае обновления данных.

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


Есть также некоторые коммер продукта доступны:

http://www.infoq.com/articles/tdd-dbpro-Foy


Кроме того, есть producs для конкретных БД движков, не уверен, какой из них вы используете:

Postgres: http://en.dklab.ru/lib/dklab_pgunit/


Дополнительное чтение:

MSDN http://msdn.microsoft.com/en-us/magazine/cc164243.aspx

http://tddbootcamp.com/2010/01/27/writing-tests-for-stored-procedures/

+0

Спасибо ДВК. В настоящее время мы используем Sybase. Я не мог найти рамки для Sybase. –

+0

Мы находимся на Sybase, поэтому мы катались самостоятельно :) – DVK

1

Если вы используете проект базы данных SSDT вы можете использовать переименованы трик в SSDT Unit Tests издеваться ваш код точки входа, как вы делаете в обычном C#. Не верный материал IoC, но он выполняет свою работу, пока не появится что-то лучшее.

Я написал пост об этом:

https://tangodude.wordpress.com/2014/02/08/ssdt-database-projects-mocking-database-objects-for-isolated-unit-testing-kind-of/

Вы также можете tSQLt для вашего развития, который поддерживает более чем DI SSDT самостоятельно.

http://tsqlt.org/user-guide/isolating-dependencies/