--- sidebar_position: 2 tags: [Начало] --- # Пишем первый тест ## Подготовка окружения Перед написанием тестов вам необходимо: * Создать информационную базу, на которой будете прогонять тесты. * Установить [тестовый движок](install/install.md) в проект. Не забывайте о необходимости сбросить признаки `Безопасный режим` и `Защита от опасных действий` после загрузки расширения. * Если вы используете 1С:Enterprise Development Tools (EDT), то установить [плагин](install/install-plugin.md), который будет вам помогать. ## Первый тест Вы все установили, перед вами открыта EDT или конфигуратор, в котором есть проверяемая конфигурация и расширение с тестовым движком `YAxUnit`. Тесты с использование YAxUnit пишутся в расширении, это может быть как отдельное расширение, так и расширение движка. Подробнее об плюсах и минусах этих вариантов вы можете почитать в [статье об организации тестов](structure.md). Для первого теста **рекомендую** использовать расширение движка. Необходимо создать общий модуль в расширении (новый, а не заимствованный), назовем его `ОМ_ПервыйТест`, это будет наш первый тестовый набор (test suite). Следующим шагом необходим создать экспортную процедуру с наименованием `ИсполняемыеСценарии`, это главный метод тестового набора, здесь необходимо будет перечислить тесты, которые содержит модуль. Так как в 1С:Предприятии нельзя в режиме исполнения понять, какие методы содержит модуль (нет рефлексии). ```bsl title="ОМ_ПервыйТест" Процедура ИсполняемыеСценарии() Экспорт КонецПроцедуры ``` Предположим **мы хотим протестировать** как работает сложение. Для этого нам необходимо создать **экспортный метод**, который будет реализовывать тест и **зарегистрировать** его в методе `ИсполняемыеСценарии`. ```bsl title="ОМ_ПервыйТест" Процедура ИсполняемыеСценарии() Экспорт ЮТТесты.ДобавитьТест("Сложение"); КонецПроцедуры Процедура Сложение() Экспорт КонецПроцедуры ``` За [регистрацию тестов](../features/test-registration.md) отвечает модуль `ЮТТесты`. Он содержит набор методов позволяющих добавлять тесты и настраивать их исполнение (параметры, режимы исполнения - клиент/сервер, работу в транзакции и многое другое). С помощью команды `ЮТТесты.ДобавитьТест("Сложение")` мы добавляем тест `Сложение` в тестовый набор. На этом этапе можно уже [запускать](run/run.md) наш тест. Теперь добавим полезной нагрузки тесту, проверим что `2 + 2 = 4`. ```bsl title="ОМ_ПервыйТест" Процедура Сложение() Экспорт РезультатСложения = 2 + 2; // 1 ЮТест.ОжидаетЧто(РезультатСложения) // 2 .Равно(4); // 3 КонецПроцедуры ``` 1. Тест выполняет интересующую нас команду `2 + 2` (это может быть вызов какого-то метода конфигурации). 2. Используя [механизм утверждений](../features/assertions/assertions.md) (проверок) указываем, что хотим проверить `ЮТест.ОжидаетЧто(РезультатСложения)` 3. Проверяем, что `РезультатСложения` равно `4` С помощью утверждений разработчик описывает, ожидания (требования) от работы команды(метода). Тест во время исполнения, проверяет соответствуют ли эти ожидания реальным данным, если есть расхождения, то будет выброшено исключение, которое зафиксируется в отчете о тестировании. Настало время запустить наш первый тест, как это сделать прочтите в [статье](run/run.md). После выполнения вы увидите отчет о тестировании, в котором тест будет "зеленым". Если в тесте исправить проверку `.Равно(4);` на `.Равно(3);` и еще раз запустить, то тест уже изменит свой статус и вы увидите сообщение об ошибке. Можно еще доработать нащ тест, проверить разные варианты сложения, для этого могут помочь параметры теста. ```bsl title="ОМ_ПервыйТест" Процедура ИсполняемыеСценарии() Экспорт ЮТТесты .ДобавитьТест("Сложение") .СПараметрами(2, 3, 5) .СПараметрами(2, -3, -1) .СПараметрами("2", "-3", "2-3") .СПараметрами("2", -3, "2-3") ; КонецПроцедуры Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт РезультатСложения = ПервыйОперанд + ВторойОперанд; ЮТест.ОжидаетЧто(РезультатСложения) .Равно(Результат); КонецПроцедуры ``` При регистрации указываются параметры, с которыми должен быть вызван тест, дополняем сигнатуру процедуры, чтобы она приняла параметры и переводим тест на использование этих параметров. Также можно добавить проверок. ```bsl title="ОМ_ПервыйТест" Процедура Сложение(ПервыйОперанд, ВторойОперанд, Результат) Экспорт РезультатСложения = ПервыйОперанд + ВторойОперанд; ЮТест.ОжидаетЧто(РезультатСложения) .Заполнено() .ИмеетТип("Число, Строка") .Равно(Результат); КонецПроцедуры ``` Поздравляю с первый реализованным тестом. Используя [руководство](../features) и имеющиеся тесты вы сможете дальше изучить и написать более полезные тесты для своих продуктов. Примеры тестов: * [Тестов движка](https://github.com/bia-technologies/yaxunit/tree/develop/tests/src/CommonModules) * Тесты других открытых проектов * [bellerage-ssl](https://github.com/Bellerage-IT/bellerage-ssl/tree/master/src/cfe/yaxunit/src/CommonModules) * [AdvancedGlobalSearchOneS](https://github.com/SeiOkami/AdvancedGlobalSearchOneS/tree/main/%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9%D0%93%D0%BB%D0%BE%D0%B1%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9%D0%9F%D0%BE%D0%B8%D1%81%D0%BA.%D0%A2%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/src/CommonModules) Также есть [видео курс](https://www.youtube.com/playlist?list=PLQ0oWbrgHNk5RF3dfH1QexQLr38Cm03Kj), кажется годным, но все не смотрел.