1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-04-20 11:38:01 +02:00
2024-03-28 21:18:51 +03:00

126 lines
8.8 KiB
Markdown

---
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), кажется годным, но все не смотрел.