Поделиться через


Использование утверждений 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 в модульном тесте базы данных приведены в разделе Практическое руководство. Написание модульного теста базы данных и тестовых запусков в области одной транзакции.

См. также

Задачи

Практическое руководство. Открытие модульного теста базы данных для изменения

Основные понятия

Использование условий теста в модульных тестах базы данных

Проверка кода базы данных при помощи модульных тестов