Использование утверждений Transact-SQL в модульных тестах базы данных
В модульном тесте базы данных выполняется скрипт теста Transact-SQL и возвращает результаты. Иногда результаты возвращаются в виде результирующего набора. Можно проверить результаты, используя условия теста. Например, можно использовать условия теста для проверки количества строк, возвращенных в определенном результирующем наборе, или проверки времени выполнения определенного теста. Дополнительные сведения об условиях теста см. в разделе Использование условий теста в модульных тестах базы данных.
Вместо использования условий теста можно использовать утверждения Transact-SQL, являющиеся инструкциями RAISERROR в скрипте Transact-SQL. В определенных обстоятельствах использование утверждений Transact-SQL предпочтительней использования условий теста.
Использование утверждений Transact-SQL
Прежде чем проверять данные с использованием утверждений Transact-SQL или условий теста, следует принять во внимание следующие обстоятельства.
Производительность. Быстрее выполнить утверждение Transact-SQL на сервере, чем перемещать данные на клиентский компьютер и манипулировать ими локально.
Знакомый язык. Отдавая предпочтение определенному языку, которым вы лучше владеете, можно выбрать утверждения Transact-SQL или условия теста C# или Visual Basic.
Сложная проверка. В некоторых случаях можно построить более сложную и точную тестовую проверку на C# или Visual Basic и проверить тесты на клиенте.
Имеющиеся библиотеки проверки. При наличии кода, выполняющего проверку, можно использовать его в модульных тестах базы данных вместо тестовых условий.
Пометка методов модульного теста ожидаемым исключением
Чтобы пометить метод модульного теста базы данных ожидаемыми исключениями, добавьте следующий атрибут:
<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) - только соответствие первой ошибке, которая происходит.
Примеры использования ожидаемых исключений и отрицательных модульных тестов базы данных см. в разделе Пошаговое руководство. Создание и выполнение модульного теста базы данных.
Инструкция RAISERROR
Можно непосредственно применять утверждения Transact-SQL на сервере с использованием инструкции RAISERROR в скрипте Transact-SQL. Синтаксис:
**RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState)**
где:
@ErrorMessage — любое пользовательское сообщение об ошибке. Можно форматировать эту строку сообщения подобно функции printf_s.
@ErrorSeverity — это пользовательский уровень важности от 0 до 18.
Примечание
Значения уровня важности 0 и 10 не вызывают завершения модульного теста базы данных неудачей.Любые другие значения в диапазоне от 0 до 18 вызывают завершение теста неудачей.
@ErrorState - это произвольное целое число в диапазоне от 1 до 127. Его можно использовать для различения одной и той же ошибки, генерируемой в разных местах кода.
Дополнительные сведения см. в разделе "RAISERROR (Transact-SQL)" в электронной документации по SQL Server, доступной на веб-сайте Майкрософт. Примеры применения RAISERROR в модульном тесте базы данных приведены в разделе Практическое руководство. Написание модульного теста базы данных и тестовых запусков в области одной транзакции.
См. также
Задачи
Практическое руководство. Открытие модульного теста базы данных для изменения