Тестирование хранимых процедур CLR SQL с проектом модульного теста - PullRequest
9 голосов
/ 22 июня 2009

Я только начинаю использовать VS2008 для написания хранимых процедур clr для SQL 2008. При написании кода на c # я привык иметь отдельный «тестовый проект», где я помещал бы весь свой код модульного тестирования, однако он сначала появляется краснеть, что у меня не может быть такой же настройки с проектом clr sql с хранимыми процедурами. Такое ощущение, что это можно сделать, и мне не хватает пары параметров конфигурации, но я не уверен, что это могут быть.

Я использую

  • Visual Studio 2008
  • MS Test
  • MS SQL 2008

Мои требования:

  1. отладка хранимой процедуры в отладчике Visual Studio
  2. есть куча модульных тестов для проверки хранимых процедур

Кто-нибудь знает, как я могу сделать так, чтобы проект модульного теста правильно развернул хранимые процедуры на сервере, подключился к серверу sql и позволил мне пройти через модульное тестирование к хранимым процедурам, которые находятся на сервере?

**** UPDATE ****

Спасибо всем за ответы, но они не совсем то, что я ищу.

Ответ Марка Симанна , приведенный ниже, представляет собой интересный подход, о котором я не знал, и я непременно буду использовать его, когда дело доходит до сброса моей базы данных до известного состояния. Однако я пытаюсь отладить хранимые процедуры CLR, и, похоже, что метод Марка не позволит мне перейти от проекта модульного тестирования к серверу SQL и отладить код, находящийся на сервере.

Я хочу отладить C # на сервере, очень похоже на решение pho3nix , указанное ниже. Однако, используя этот стандартный подход, вам нужно написать свои тестовые сценарии, используя файл Test.sql и не используя проект модульного теста из Visual Studio.

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

Ближайшее решение, которое я нашел до сих пор, - Алекс Кузнецов и Алекс Стайлер , однако, используя это решение, я не могу пройти к серверу SQL.

**** ОБНОВЛЕНИЕ 2 ****

Это скорее «удар», чтобы поднять этот вопрос ... Мне все еще не повезло, что я прошел тестовый сервер на SQL-сервере. Есть еще мысли?

Ответы [ 3 ]

2 голосов
/ 01 июля 2009

При создании проекта у меня есть древовидный узел с базой данных и элемент с именем Проект SQL Server.

альтернативный текст http://img514.imageshack.us/img514/8523/81345560.jpg

Далее, когда создается шаблон проекта, я получаю тестовые сценарии (Test.sql), где я могу протестировать все мои классы CLR SQL Server, используя общие процедуры и команды sql.

альтернативный текст http://img17.imageshack.us/img17/7826/38591345.jpg

С этим вы можете иметь интерфейс разработки для CLR с отладкой. Test.sql похож на Unit Class для классов CLR.

PS. Не забудьте активную CLR в вашей конфигурации SQL Server.

2 голосов
/ 26 июня 2009

Вы должны включить отладку SQL / CLR в соединении, прежде чем сможете отлаживать свой код. чтобы сделать это, следуйте инструкциям здесь http://msdn.microsoft.com/en-us/library/ms165039(VS.80).aspx

Обратите внимание, что при отладке C # SP все управляемые потоки на сервере SQL будут приостановлены во время отладки

Надеюсь, это поможет.

1 голос
/ 29 июня 2009

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

Я думаю, он отвечает всем вашим требованиям.

...