» » » tSqlt — модульное тестирование в Sql Server

 

tSqlt — модульное тестирование в Sql Server

Автор: admin от 31-08-2014, 21:10, посмотрело: 872

Если значительная часть бизнес логики Вашего приложения располагается в базе данных, вас наверняка посещала мысль о модульном тестировании хранимых процедур и функций. Опустим обсуждение вопроса о том, хорошо это или плохо — выносить логику в хранимые процедуры, и разберемся — как тестировать хранимый код. В этой статье я расскажу о tSqlt — замечательном бесплатном фреймворке unit-тестов с открытым исходным кодом для Sql Server.

Установка


tSqlt распространяется бесплатно под лицензией Apache 2.0 с открытым исходным кодом. Дистрибутив в виде архива можно загрузить с официального сайта.

Прежде чем начинать установку фреймворка, необходимо настроить экземпляр Sql server для работы с CLR:
EXEC sp_configure 'clr enabled', 1;
RECONFIGURE;

И объявить целевую базу данных как доверенную (свойство TRUSTWORTHY).
DECLARE @cmd NVARCHAR(MAX);
SET @cmd = 'ALTER DATABASE ' + 
           QUOTENAME(DB_NAME()) + 
           ' SET TRUSTWORTHY ON;';
EXEC(@cmd);

В архиве Вы найдете sql-скрипт, который необходимо выполнить в целевой базе данных. Скрипт создаст собственную схему tSqlt, сборку CLR и множество процедур и функций. Часть процедур будут содержать префикс Private_ и предназначены для внутреннего использования самим фреймворком.

Работа с тестами


Тест представляет собой хранимую процедуру, название которой начинается со слова «test». Для удобства тесты объединяются в «классы», представляющие собой схемы Sql Server. Каждый класс может иметь свою процедуру SetUp, которая будет вызываться перед запуском каждого теста.
Создать новый класс можно процедурой NewTestClass
EXEC tSQLt.NewTestClass 'MyTestClass'

Запускать тесты можно все разом, по классам и по одному. Для этого служат процедуры Run и RunAll:
-- Запуск всех тестов
EXEC tSQLt.RunAll;

-- Запуск всех тестов класса MyTestClass
EXEC tSQLt.Run 'MyTestClass';

-- Запуск теста FisrtTest класса MyTestClass
EXEC tSQLt.Run 'MyTestClass.FisrtTest';

-- Повторный запуск последнего теста.
-- будет запущен тест FisrtTest из класса MyTestClass
EXEC tSQLt.Run;

Возможности


Если Вы когда-нибудь использовали какой-либо фреймворк для unit-тестов, вы будете приятно удивлены, не найдя серьезных отличий в tSqlt.
Замечательной особенностью tSqlt является изоляция тестов друг от друга, реализуемая с помощью механизма транзакций.
Помимо этого tSqlt содержит ряд полезных процедур для тестового вывода, помогающих определить — что же в тесте пошло не так.

Типичный тест состоит из трех частей:

  • Подготовка окружения / тестовых данных

  • Выполнение тестируемого кода

  • Проверка результатов


  • Расскажу о них по порядку:

    здесь, а ее решение можно посмотреть здесь.

    На десерт


    Для тех, кто любит графический интерфейс, зеленые и красные галочки напротив тестов и тому подобное компания Redgate разработала SQL Test — очень мощный плагин для Sql Managment Studio, основанный на tSqlt и позволяющий выполнять всю работу с тестами из меню.

    Источник: Хабрахабр

    Категория: Компании » Microsoft

    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

    Добавление комментария

    Имя:*
    E-Mail:
    Комментарий:
    Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
    Введите два слова, показанных на изображении: *