Skip to content

Commit

Permalink
Добавлена документация по YAxUnit. Обновлен набор тестов.
Browse files Browse the repository at this point in the history
  • Loading branch information
Plehanov Stepan authored and Plehanov Stepan committed May 4, 2024
1 parent c4307f5 commit c0fa6ec
Show file tree
Hide file tree
Showing 9 changed files with 318 additions and 138 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Руководство по написанию тестов YAxUnit

## Шаг 1: Клонирование репозитория

Для начала работы вам необходимо клонировать репозиторий с GitHub. Вы можете сделать это, выполнив следующую команду в Git:

```bash
git clone https://github.com/firstBitSportivnaya/PSSL.git
```

## Шаг 2: Загрузка конфигурации
После клонирования репозитория загрузите конфигурацию в информационную базу из каталога:
```bash
PSSL/src/cf/
```
## Шаг 3: Добавление расширения конфигурации
Далее необходимо добавить расширение конфигурации YAxUnit, используйте файлы из следующего каталога:
```bash
PSSL/src/cfe/YAXUnit
```
После добавления расширения в режиме 1С:Предприятие должна появиться панель управления YAxUnit, которая отображается в виде подсистемы.

## Шаг 4: Создание тестов
### Определение тестируемой функции
Допустим в вашей конфигурации есть общий модуль **__ОбщегоНазначенияВспомогательныеФункции** в котором есть функция определения четности числа:

```1C
Функция ЧетноеЧисло(Число) Экспорт
Возврат Число % 2 = 0;
КонецФункции
```
В данном примере рассмотрим написание тестов для этой функции.

### Составление тестового набора
Для начала необходимо составить тестовый набор для проверки функции, стараясь покрыть пограничные случаи:
| Число | Результат |
|-------|-------------|
| 2 | Четное |
| 1 | Нечетное |
| 0 | Четное |
| -1 | Нечетное |
| -2 | Четное |
| 100 | Четное |
| 99 | Нечетное |

### Создание модуля для тестов
Создайте новый модуль в расширении YAxUnit, который принято называть по названию объекта, в котором находится тестируемая функция. Для нашего случая это будет модуль **ОМ__ОбщегоНазначенияВспомогательныеФункции**.

### Написание теста
Теперь напишем сам тест, для этого внутри **ОМ__ОбщегоНазначенияВспомогательныеФункции** создаем процедуру **ИсполняемыеСценарии()**:
```1C
Процедура ИсполняемыеСценарии() Экспорт
// Создание группы тестов
ЮТТесты.ДобавитьТестовыйНабор("Проверка функции ЧетноеЧисло")
// Добавление конкретного теста в группу
.ДобавитьТест("ТестЧетноеЧисло")
// Передача параметров в тест
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 2, Истина))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 1, Ложь))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 0, Истина))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", -1, Ложь))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", -2, Истина))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 100, Истина))
.СПараметрами(Новый Структура("Число, ОжидаемыйРезультат", 99, Ложь));
КонецПроцедуры
```
#### Структура процедуры ИсполняемыеСценарии()
Процедура обычно содержит вызовы методов для добавления тестов. Основной метод — **ДобавитьТестовыйНабор()**, который создает группу тестов. В каждую группу затем добавляются конкретные тесты с помощью метода **ДобавитьТест()**. Эти тесты могут иметь параметры, задаваемые через метод **СПараметрами()**.

#### Написание самого теста
Сам тест реализуется в отдельной процедуре, которая вызывается из **ИсполняемыеСценарии()** через **ДобавитьТест()**. В этой процедуре вы описываете логику тестирования.

Пример процедуры теста:
```1C
Процедура ТестЧетноеЧисло(Параметры) Экспорт
// Вызов тестируемой функции
Результат = __ОбщегоНазначенияВспомогательныеФункции.ЧетноеЧисло(Параметры.Число);
// Проверка результата
ЮТест.ОжидаетЧто(Результат).Равно(Параметры.ОжидаемыйРезультат);
КонецПроцедуры
```
Теперь при запуске конфигурации в режиме 1С:Предприятие, в подсистеме YAxUnit должен отобразиться наш тест.
Запускаем тест и видим результат его работы.

Полную и исчерпывающую информацию по работе с расширением можно найти в документации [YAXUnit](https://bia-technologies.github.io/yaxunit/).
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,14 @@
Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий

Сценарий: Проверка установки пометки удаления для элементов справочника Тип соответствия объектов ИБ
* Установка пометки
* Создание элемента
И В командном интерфейсе я выбираю 'Соответствие объектов ИБ' 'Тип соответствия объектов ИБ'
Тогда открылось окно 'Тип соответствия объектов ИБ'
И я нажимаю на кнопку с именем 'ФормаСоздать'
Тогда открылось окно 'Тип соответствия объектов ИБ (создание)'
И в поле с именем 'Наименование' я ввожу текст 'ВА_Тест'
И я нажимаю на кнопку с именем 'ФормаЗаписатьИЗакрыть'
* Установка пометки
И в таблице 'Список' я выделяю все строки
И я выбираю пункт контекстного меню с именем 'СписокКонтекстноеМенюУстановитьПометкуУдаления' на элементе формы с именем "Список"
Тогда открылось окно '1С:Предприятие'
Expand Down

This file was deleted.

23 changes: 23 additions & 0 deletions src/cfe/YAXUnit/CommonModules/ОМ_КоннекторHTTP.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="52b06bb8-a345-403a-86c1-0803da9b77e4">
<Properties>
<Name>ОМ_КоннекторHTTP</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>О м коннектор HTTP</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#Область СлужебныйПрограммныйИнтерфейс

//Используем мок ЮТест.Данные().HTTPСервисЗапрос

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

// Добавляем тест 'ПроверкаМетодаЗапроса' в набор тестов
ЮТТесты.ДобавитьТест("ПроверкаМетодаЗапроса");

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

// Процедура тестирования метода HTTP-запроса
Процедура ПроверкаМетодаЗапроса() Экспорт

// Создание объекта HTTP-запроса с указанием метода GET
Запрос = ЮТест.Данные().HTTPСервисЗапрос().Метод("GET");

// Проверка, что метод запроса установлен корректно
ЮТест.ОжидаетЧто(Запрос.HTTPМетод).Равно("GET");

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.16">
<CommonModule uuid="99f38b62-a6ed-4db4-ae07-f9a7c8656043">
<Properties>
<Name>_ОбщегоНазаначенияСервер</Name>
<Name>ОМ_ОбщегоНазаначенияСервер</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Общего назаначения сервер</v8:content>
<v8:content>О м общего назаначения сервер</v8:content>
</v8:item>
</Synonym>
<Comment/>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#Область СлужебныйПрограммныйИнтерфейс

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

ЮТТесты
.ДобавитьТестовыйНабор("Тесты функции ОписаниеТипаЧисло")
.ДобавитьТест("ТестДолженСоздатьТипЧисло")
.ДобавитьТест("ТестДолженВернутьОписаниеЧислаСКорректнымЗнаком")
.ДобавитьТест("ТестДолженУстановитьЗнакЛюбойПриОтсутствииЯвнойУказки");

ЮТТесты.ДобавитьТест("ТестПолученияТаблицыДатЗаПериод");


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

#КонецОбласти


#Область Тесты

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

Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный);
ЮТест.ОжидаетЧто(Тип(Описание)).Равно(Тип("Число"));

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

Процедура ТестДолженВернутьОписаниеЧислаСКорректнымЗнаком() Экспорт

Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный);
Проверка = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный));

ЮТест.ОжидаетЧто(Проверка).Равно(Проверка);

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

Процедура ТестДолженУстановитьЗнакЛюбойПриОтсутствииЯвнойУказки() Экспорт

Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2);
Проверка = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Любой);

ЮТест.ОжидаетЧто(Описание).Равно(Проверка);

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

Процедура ТестПолученияТаблицыДатЗаПериод() Экспорт

НачалоПериода = '20200101';
ОкончаниеПериода = '20200110';
Интервал = "День";

Результат = __ОбщегоНазначенияСервер.ПолучитьТаблицуДатЗаПериод(НачалоПериода, ОкончаниеПериода, Интервал);

ОжидаемыйРезультат = Новый ТаблицаЗначений;
ОжидаемыйРезультат.Колонки.Добавить("Период", Новый ОписаниеТипов("Дата"));
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200101');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200102');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200103');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200104');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200105');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200106');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200107');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200108');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200109');
ДобавитьСтрокуВТаблицу(ОжидаемыйРезультат, '20200110');

ЮТест.ОжидаетЧто(Результат.Количество()).Равно(ОжидаемыйРезультат.Количество());

Для каждого Строка Из Результат Цикл
ЮТест.ОжидаетЧто(Строка.Период).Равно(ОжидаемыйРезультат[Результат.Индекс(Строка)].Период);
КонецЦикла;

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

Процедура ДобавитьСтрокуВТаблицу(Таблица, Дата) Экспорт

Строка = Таблица.Добавить();
Строка.Период = Дата;

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

#КонецОбласти

Loading

0 comments on commit c0fa6ec

Please sign in to comment.