Использование проверочных утверждений Transact-SQL в модульных тестах SQL Server
При выполнении модульного теста SQL Server запускается скрипт Transact-SQL теста, который возвращает результат.Иногда результаты возвращаются в виде результирующего набора.Результаты можно проверить с помощью условий теста.Например, по тестовому условию можно проверить число возвращенных строк в результирующем наборе. Можно также проверить время, которое заняло выполнение конкретного теста.Дополнительные сведения об условиях теста см. в разделе Использование условий теста в модульных тестах SQL Server.
Вместо условий теста можно воспользоваться проверочными утверждениями Transact-SQL, которые определяются с помощью инструкций THROW или RAISERROR в скрипте Transact-SQL.В определенных обстоятельствах следует выбирать проверочные утверждения Transact-SQL, а не условия теста.
Использование проверочных утверждений Transact-SQL
Прежде чем принимать решение о проверке данных через проверочные утверждения Transact-SQL или через условия теста, необходимо рассмотреть следующие моменты.
Производительность.Быстрее выполнить проверочное утверждение Transact-SQL на сервере, чем передавать данные на клиентский компьютер и обрабатывать их локально.
Степень владения языком.Выбор языка осуществляется на основе опыта владения им, исходя из этого и выбирается использование проверочных утверждений Transact-SQL или условий теста Visual C# или Visual Basic.
Сложная проверка.В некоторых случаях можно создать более сложные тесты в Visual C# или Visual Basic и выполнять проверку тестов на клиенте.
Простота.Часто проще использовать предопределенное условие теста, а не писать эквивалентный скрипт с помощью Transact-SQL.
Устаревшие библиотеки проверки.Если уже имеется код, выполняющий проверку, его можно использовать в модульном тесте SQL Server вместо условий теста.
Пометка методов модульного теста ожидаемым исключением
Чтобы отметить в методе модульного теста SQL Server ожидаемые исключения, добавьте следующий атрибут:
<ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)> _
[ExpectedSqlException(MessageNumber=nnnnn, Severity=x, MatchFirstError=false, State=y)]
Где:
nnnnn — номер ожидаемого сообщения, например 14025;
x — серьезность ожидаемого исключения;
y — состояние ожидаемого исключения.
Любые неуказанные параметры не используются.Эти параметры передаются инструкции RAISERROR в коде базы данных.Если указано MatchFirstError = true, то атрибут будет в исключении соответствовать любой из SqlErrors.По умолчанию (MatchFirstError = true) сопоставление происходит только с первой возникшей ошибкой.
Пример использования ожидаемых исключений и отрицательного модульного теста SQL Server см. в разделе Пошаговое руководство. Создание и запуск модульного теста SQL Server.
Инструкция RAISERROR
Примечание |
---|
Используйте THROW вместо RAISERROR.Предложение RAISERROR является устаревшим. |
Проверочные утверждения Transact-SQL можно использовать непосредственно на сервере с помощью инструкции RAISERROR в скрипте Transact-SQL.Синтаксис:
**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**
где:
@ErrorMessage — любое, определяемое пользователем сообщение об ошибке.Форматирование строки сообщения производится так же, как и в функции printf_s.
@ErrorSeverity — определяемая пользователем степень серьезности (0–18).
Примечание |
---|
Значения степени серьезности 0 и 10 не приводят к сбою модульного теста SQL Server.Чтобы вызвать сбой проверки, необходимо указывать значение в диапазоне от 0 до 18. |
@ErrorState — произвольное целое число от 1 до 127.Оно служит для различения повторений одной и той же ошибки, возникшей в разных местах кода.
Дополнительные сведения см. в разделе Предложение RAISERROR (Transact-SQL).Пример использования RAISERROR в модульном тесте SQL Server приведен в разделе Практическое руководство. Написание модульного теста SQL Server, который выполняется в области действия одной транзакции.
См. также
Создание и определение модульных тестов SQL Server
Использование условий теста в модульных тестах SQL Server
Проверка кода базы данных с помощью модульных тестов SQL Server
Практическое руководство. Открытие модульного теста SQL Server для его изменения