Возможности YAxUnit
YAxUnit предоставляет относительно богатый набор инструментов для помощи разработчикам в написании тестов.
Регистрация и настройка выполнения тестов
Создание тестов начинается с регистрации их в движке, необходимо рассказать движку, какие имеются тесты, как их запускать, с какими параметрами.
Для этого используется обязательный предопределенный экспортный метод ИсполняемыеСценарии
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.Добавить...
КонецПроцедуры
Подробнее смотрите в описании.
Реализация тестов
Большая часть методов программного интерфейса YAxUnit собрана в модуле ЮТест. Этот модуль является точкой входа в API используемый в тестах, он предоставляет доступ к другим модулям движка:
ЮТест.Данные()
- Возвращает модуль работы с тестовыми даннымиЮТест.ОжидаетЧто()
- Возвращает модуль работы с утверждениямиЮТест.ОжидаетЧтоТаблицаБазы()
- Возвращает модуль работы с утверждениями для проверки объектов информационной базыЮТест.Контекст()
- Возвращает модуль работы с контекстомЮТест.Предикат()
- Возвращает конструктор предикатовЮТест.Варианты()
- Возвращает конструктор вариантов прогона теста.
Создание тестовых данных
Почти все тесты опираются на данные, будь то параметры вызова или записи информационной базы. Вам придется эти данные создавать.
Настоятельно рекомендую создавать данные программно, не загрузкой из макетов или вручную, а именно программно генерировать. О причинах можете почитать в статье о тестовых данных
Движок предоставляет различные инструменты для создания данных:
ЮТест.Данные().КонструкторОбъекта
, с помощью которого вы можете создать объект информационной базы с необходимыми реквизитами.- Создание пустышек - примитивных объектов с минимальным заполнения.
- Возможна загрузка из макета. Вы можете создать все необходимые данные загрузив их из макета
- Работа с временными файлами.
- Подражатель, для генерации правдоподобных данных.
- Генерация случайных значений.
ЮТест.Данные().КонструкторОбъектаXDTO
, с помощью которого вы можете создать XDTO объект.
Мокирование
При тестировании полезно минимизировать "внешнее" воздействие на проверяемый функционал. Например, не использовать внешний http сервис, а эмулировать взаимодействие с ним, либо вместо выполнения запроса к базе данных вернуть предопределенный результат или вместо документа в качестве параметра передать структуру.
Те заменить какой-либо объект обманкой, упрощенной его версией.
Мокито
позволяет настроить/изменить поведение нужных методов конфигурацииВернуть
нужный результат для определенных параметров.ВыброситьИсключение
при в нужный момент.Пропустить
метод (не выполнять).- Просто
Наблюдать
(собирать статистику вызовов) за методом. - За настройку условий срабатывания тех или иных действий отвечает метода
Когда
ЮТест.Данные().HTTPСервисЗапрос()
позволяет настроить и эмулировать входящий запрос http-сервиса. Если логика обработки запросов вынесена в отдельный общий модуль, то вы с легкостью с его помощью сможете протестировать ваш сервис без использования веб-сервера.ЮТест.Данные().ADORecordSet()
позволяет протестировать "прямые" запросы к SQL.
Проверка ожиданий
- Проверка результата работы функции. Для проверки переменных (результатов методов) реализованы базовые утверждения, подробнее со списком возможностей можете ознакомиться в сгенерированном описании api.
- Если метод должен изменить данны в информационной базе, то эти изменения можно проверить с помощью утверждений ИБ, описании api утверждений.
- В некоторых случаях необходимо проанализировать какие методы и с какими параметрами вызывались. Здесь вам поможет проверка статистики вызовов, который собирает Мокито
Методы-помощники
- Изменение данных в базе
- Предикаты
- Получение данных из базы и работа с запросами
- Варианты вызова. Чтобы повысить покрытие метода тестом можно сформировать наборы (варианты) параметров вызова метода. Для упрощения работы с ними вы можете воспользоваться методом
ЮТест.Варианты()
ЮТест.Пропустить
ЮТест.Пауза
ЮТест.ВывестиВКонсоль
Примеры
При возникновении трудностей с написанием тестов вы всегда можете
- Посмотреть примеры тестов движка
- Тесты других открытых проектов