Использование проверочных утверждений 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 для изменения
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по