Я экспериментирую с модульным тестированием проекта базы данных SQL Server в Visual Studio 2013. Выход хранимой процедуры, которую я хочу протестировать, записывается в журнал файл путем вызова другой хранимой процедуры, sp_log
.Visual Studio 2013: Отказывание хранимых процедур при модульном тестировании проекта базы данных SQL Server
Мне кажется, что самый простой способ проверить, работает ли хранимая процедура, которую я хочу протестировать, заключается в том, чтобы издеваться над sp_log
и использовать условие проверки, чтобы проверить вывод исправленной хранимой процедуры.
Я мог бы создать макет sp_log
в сценарии предварительной проверки, без проблем. Однако в сценарии после теста я хотел бы повторно выполнить сценарий sp_Log
CREATE PROC
, чтобы восстановить его исходное определение. Я не хочу вырезать и вставлять sp_Log CREATE PROC
из тестируемого проекта SQL Server Database Project, так как я уверен, что две версии CREATE PROC
(в проекте базы данных SQL Server и в проекте тестирования модулей) перестанут синхронизироваться.
Можно ли каким-либо образом вызвать сценарий sp_Log CREATE PROC
в проекте базы данных SQL Server из сценария после тестирования в проекте Unit Test?
В качестве альтернативы, есть ли способ записать определение sp_log
в сценарий предварительной проверки, а затем повторно запустить это определение в пост-тестовом сценарии? Например. возможно ли создать локальную переменную в сценарии предварительной проверки и прочитать определение хранимой процедуры в ней, а затем прочитать определение из локальной переменной в сценарии после теста?
Отличная идея, которая будет работать. –
Предостережение для всех, кто думает об этом: если тест не удается, появляется сценарий пост-теста. Таким образом, вы можете остаться со сломанной базой данных. Я думаю, вам нужно будет отредактировать автоматически сгенерированный тестовый код .NET, чтобы гарантировать, что сценарий после тестирования будет запущен, даже если условие проверки завершится неудачно. Когда условие теста завершается неудачно, он, похоже, генерирует исключение, которое предотвращает выполнение оставшейся части тестового кода .NET. –
@SimonTewsi Вы можете исправить код, чтобы убедиться, что сценарий пост-теста всегда выполняется, редактируя тестовый код блока C# - вам просто нужно обернуть тестовое действие в блок try/finally. Это будет фактически исправлено в будущей версии SSDT. См. Это сообщение на форуме SSDT для получения полного объяснения: http://social.msdn.microsoft.com/Forums/sqlserver/en-US/e80b77d7-0cdc-4ecf-bd4e-6a03f1d821aa/posttest-not-run-after- test-failed? forum = ssdt –