Перейти к основному содержимому

Пишем первый тест

Подготовка окружения

Перед написанием тестов вам необходимо:

  • Создать информационную базу, на которой будете прогонять тесты.
  • Установить тестовый движок в проект. Не забывайте о необходимости сбросить признаки Безопасный режим и Защита от опасных действий после загрузки расширения.
  • Если вы используете 1С:Enterprise Development Tools (EDT), то установить плагин, который будет вам помогать.

Первый тест

Вы все установили, перед вами открыта EDT или конфигуратор, в котором есть проверяемая конфигурация и расширение с тестовым движком YAxUnit.

Тесты с использование YAxUnit пишутся в расширении, это может быть как отдельное расширение, так и расширение движка. Подробнее об плюсах и минусах этих вариантов вы можете почитать в статье об организации тестов. Для первого теста рекомендую использовать расширение движка.

Необходимо создать общий модуль в расширении (новый, а не заимствованный), назовем его ОМ_ПервыйТест, это будет наш первый тестовый набор (test suite).

Следующим шагом необходим создать экспортную процедуру с наименованием ИсполняемыеСценарии, это главный метод тестового набора, здесь необходимо будет перечислить тесты, которые содержит модуль. Так как в 1С:Предприятии нельзя в режиме исполнения понять, какие методы содержит модуль (нет рефлексии).

ОМ_ПервыйТест

Процедура ИсполняемыеСценарии() Экспорт

КонецПроцедуры

Предположим мы хотим протестировать как работает сложение.

Для этого нам необходимо создать экспортный метод, который будет реализовывать тест и зарегистрировать его в методе ИсполняемыеСценарии.

ОМ_ПервыйТест
Процедура ИсполняемыеСценарии() Экспорт

ЮТТесты.ДобавитьТест("Сложение");

КонецПроцедуры

Процедура Сложение() Экспорт

КонецПроцедуры

За регистрацию тестов отвечает модуль ЮТТесты. Он содержит набор методов позволяющих добавлять тесты и настраивать их исполнение (параметры, режимы исполнения - клиент/сервер, работу в транзакции и многое другое). С помощью команды ЮТТесты.ДобавитьТест("Сложение") мы добавляем тест Сложение в тестовый набор. На этом этапе можно уже запускать наш тест.

Теперь добавим полезной нагрузки тесту, проверим что 2 + 2 = 4.

ОМ_ПервыйТест
Процедура Сложение() Экспорт

РезультатСложения = 2 + 2; // 1
ЮТест.ОжидаетЧто(РезультатСложения) // 2
.Равно(4); // 3

КонецПроцедуры
  1. Тест выполняет интересующую нас команду 2 + 2 (это может быть вызов какого-то метода конфигурации).
  2. Используя механизм утверждений (проверок) указываем, что хотим проверить ЮТест.ОжидаетЧто(РезультатСложения)
  3. Проверяем, что РезультатСложения равно 4

С помощью утверждений разработчик описывает, ожидания (требования) от работы команды(метода). Тест во время исполнения, проверяет соответствуют ли эти ожидания реальным данным, если есть расхождения, то будет выброшено исключение, которое зафиксируется в отчете о тестировании.

Настало время запустить наш первый тест, как это сделать прочтите в статье. После выполнения вы увидите отчет о тестировании, в котором тест будет "зеленым". Если в тесте исправить проверку .Равно(4); на .Равно(3); и еще раз запустить, то тест уже изменит свой статус и вы увидите сообщение об ошибке.

Можно еще доработать нащ тест, проверить разные варианты сложения, для этого могут помочь параметры теста.

ОМ_ПервыйТест
Процедура ИсполняемыеСценарии() Экспорт

ЮТТесты
.ДобавитьТест("Сложение")
.СПараметрами(2, 3, 5)
.СПараметрами(2, -3, -1)
.СПараметрами("2", "-3", "2-3")
.СПараметрами("2", -3, "2-3")
;

КонецПроцедуры

Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт

РезультатСложения = ПервыйОперанд + ВторойОперанд;
ЮТест.ОжидаетЧто(РезультатСложения)
.Равно(Результат);

КонецПроцедуры

При регистрации указываются параметры, с которыми должен быть вызван тест, дополняем сигнатуру процедуры, чтобы она приняла параметры и переводим тест на использование этих параметров.

Также можно добавить проверок.

ОМ_ПервыйТест
Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт

РезультатСложения = ПервыйОперанд + ВторойОперанд;
ЮТест.ОжидаетЧто(РезультатСложения)
.Заполнено()
.ИмеетТип("Число, Строка")
.Равно(Результат);

КонецПроцедуры

Поздравляю с первый реализованным тестом. Используя руководство и имеющиеся тесты вы сможете дальше изучить и написать более полезные тесты для своих продуктов.

Примеры тестов:

Также есть видео курс, кажется годным, но все не смотрел.