Пишем первый тест
Подготовка окружения
Перед написанием тестов вам необходимо:
- Создать информационную базу, на которой будете прогонять тесты.
- Установить тестовый движок в проект. Не забывайте о необходимости сбросить признаки
Безопасный режим
иЗащита от опасных действий
после загрузки расширения. - Если вы используете 1С:Enterprise Development Tools (EDT), то установить плагин, который будет вам помогать.
Первый тест
Вы все установили, перед вами открыта EDT или конфигуратор, в котором есть проверяемая конфигурация и расширение с тестовым движком YAxUnit
.
Тесты с использование YAxUnit пишутся в расширении, это может быть как отдельное расширение, так и расширение движка. Подробнее об плюсах и минусах этих вариантов вы можете почитать в статье об организации тестов. Для первого теста рекомендую использовать расширение движка.
Необходимо создать общий модуль в расширении (новый, а не заимствованный), назовем его ОМ_ПервыйТест
, это будет наш первый тестовый набор (test suite).
Следующим шагом необходим создать экспортную процедуру с наименованием ИсполняемыеСценарии
, это главный метод тестового набора, здесь необходимо будет перечислить тесты, которые содержит модуль. Так как в 1С:Предприятии нельзя в режиме исполнения понять, какие методы содержит модуль (нет рефлексии).
Процедура ИсполняемыеСценарии() Экспорт
КонецПроцедуры
Предположим мы хотим протестировать как работает сложение.
Для этого нам необходимо создать экспортный метод, который будет реализовывать тест и зарегистрировать его в методе ИсполняемыеСценарии
.
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.ДобавитьТест("Сложение");
КонецПроцедуры
Процедура Сложение() Экспорт
КонецПроцедуры
За регистрацию тестов отвечает модуль ЮТТесты
. Он содержит набор методов позволяющих добавлять тесты и настраивать их исполнение (параметры, режимы исполнения - клиент/сервер, работу в транзакции и многое другое).
С помощью команды ЮТТесты.ДобавитьТест("Сложение")
мы добавляем тест Сложение
в тестовый набор. На этом этапе можно уже запускать наш тест.
Теперь добавим полезной нагрузки тесту, проверим что 2 + 2 = 4
.
Процедура Сложение() Экспорт
РезультатСложения = 2 + 2; // 1
ЮТест.ОжидаетЧто(РезультатСложения) // 2
.Равно(4); // 3
КонецПроцедуры
- Тест выполняет интересующую нас команду
2 + 2
(это может быть вызов какого-то метода конфигурации). - Используя механизм утверждений (проверок) указываем, что хотим проверить
ЮТест.ОжидаетЧто(РезультатСложения)
- Проверяем, что
РезультатСложения
равно4
С помощью утверждений разработчик описывает, ожидания (требования) от работы команды(метода). Тест во время исполнения, проверяет соответствуют ли эти ожидания реальным данным, если есть расхождения, то будет выброшено исключение, которое зафиксируется в отчете о тестировании.
Настало время запустить наш первый тест, как это сделать прочтите в статье.
После выполнения вы увидите отчет о тестировании, в котором тест будет "зеленым". Если в тесте исправить проверку .Равно(4);
на .Равно(3);
и еще раз запустить, то тест уже изменит свой статус и вы увидите сообщение об ошибке.
Можно еще доработать нащ тест, проверить разные варианты сложения, для этого могут помочь параметры теста.
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты
.ДобавитьТест("Сложение")
.СПараметрами(2, 3, 5)
.СПараметрами(2, -3, -1)
.СПараметрами("2", "-3", "2-3")
.СПараметрами("2", -3, "2-3")
;
КонецПроцедуры
Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт
РезультатСложения = ПервыйОперанд + ВторойОперанд;
ЮТест.ОжидаетЧто(РезультатСложения)
.Равно(Результат);
КонецПроцедуры
При регистрации указываются параметры, с которыми должен быть вызван тест, дополняем сигнатуру процедуры, чтобы она приняла параметры и переводим тест на использование этих параметров.
Также можно добавить проверок.
Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт
РезультатСложения = ПервыйОперанд + ВторойОперанд;
ЮТест.ОжидаетЧто(РезультатСложения)
.Заполнено()
.ИмеетТип("Число, Строка")
.Равно(Результат);
КонецПроцедуры
Поздравляю с первый реализованным тестом. Используя руководство и имеющиеся тесты вы сможете дальше изучить и написать более полезные тесты для своих продуктов.
Примеры тестов:
- Тестов движка
- Тесты других открытых проектов
Также есть видео курс, кажется годным, но все не смотрел.