diff --git "a/docs/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276 \320\277\320\276 \320\275\320\260\320\277\320\270\321\201\320\260\320\275\320\270\321\216 \321\202\320\265\321\201\321\202\320\276\320\262 YAxUnit.md" "b/docs/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276 \320\277\320\276 \320\275\320\260\320\277\320\270\321\201\320\260\320\275\320\270\321\216 \321\202\320\265\321\201\321\202\320\276\320\262 YAxUnit.md" new file mode 100644 index 00000000..d12eb7f0 --- /dev/null +++ "b/docs/\320\240\321\203\320\272\320\276\320\262\320\276\320\264\321\201\321\202\320\262\320\276 \320\277\320\276 \320\275\320\260\320\277\320\270\321\201\320\260\320\275\320\270\321\216 \321\202\320\265\321\201\321\202\320\276\320\262 YAxUnit.md" @@ -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/). \ No newline at end of file diff --git "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\276\320\274\320\265\321\202\320\272\320\270 \320\275\320\260 \321\203\320\264\320\260\320\273\320\265\320\275\320\270\320\265.feature" "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\276\320\274\320\265\321\202\320\272\320\270 \320\275\320\260 \321\203\320\264\320\260\320\273\320\265\320\275\320\270\320\265.feature" index cb89da1d..e2925a32 100644 --- "a/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\276\320\274\320\265\321\202\320\272\320\270 \320\275\320\260 \321\203\320\264\320\260\320\273\320\265\320\275\320\270\320\265.feature" +++ "b/features/\320\237\321\200\320\276\320\262\320\265\321\200\320\272\320\260 \320\277\320\276\320\274\320\265\321\202\320\272\320\270 \320\275\320\260 \321\203\320\264\320\260\320\273\320\265\320\275\320\270\320\265.feature" @@ -8,9 +8,14 @@ Дано Я запускаю сценарий открытия TestClient или подключаю уже существующий Сценарий: Проверка установки пометки удаления для элементов справочника Тип соответствия объектов ИБ -* Установка пометки +* Создание элемента И В командном интерфейсе я выбираю 'Соответствие объектов ИБ' 'Тип соответствия объектов ИБ' Тогда открылось окно 'Тип соответствия объектов ИБ' + И я нажимаю на кнопку с именем 'ФормаСоздать' + Тогда открылось окно 'Тип соответствия объектов ИБ (создание)' + И в поле с именем 'Наименование' я ввожу текст 'ВА_Тест' + И я нажимаю на кнопку с именем 'ФормаЗаписатьИЗакрыть' +* Установка пометки И в таблице 'Список' я выделяю все строки И я выбираю пункт контекстного меню с именем 'СписокКонтекстноеМенюУстановитьПометкуУдаления' на элементе формы с именем "Список" Тогда открылось окно '1С:Предприятие' diff --git "a/src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" deleted file mode 100644 index 5c1d159a..00000000 --- "a/src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" +++ /dev/null @@ -1,44 +0,0 @@ -#Область СлужебныйПрограммныйИнтерфейс - -Процедура ИсполняемыеСценарии() Экспорт - - ЮТТесты - .ДобавитьТестовыйНабор("Тесты функции ОписаниеТипаЧисло") - .ДобавитьТест("ТестДолженСоздатьТипЧисло") - .ДобавитьТест("ТестДолженВернутьОписаниеЧислаСКорректнымЗнаком") - .ДобавитьТест("ТестДолженУстановитьЗнакЛюбойПриОтсутствииЯвнойУказки"); -КонецПроцедуры - -#КонецОбласти - - -#Область Тесты - - -Процедура ТестДолженСоздатьТипЧисло() Экспорт - - Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); - ЮТест.ОжидаетЧто(Тип(Описание)).Равно(Тип("Число")); - -КонецПроцедуры - -Процедура ТестДолженВернутьОписаниеЧислаСКорректнымЗнаком() Экспорт - - Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Неотрицательный); - Проверка = Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный)); - - ЮТест.ОжидаетЧто(Проверка).Равно(Проверка); - -КонецПроцедуры - -Процедура ТестДолженУстановитьЗнакЛюбойПриОтсутствииЯвнойУказки() Экспорт - - Описание = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2); - Проверка = __ОбщегоНазначенияСервер.ОписаниеТипаЧисло(10, 2, ДопустимыйЗнак.Любой); - - ЮТест.ОжидаетЧто(Описание).Равно(Проверка); - -КонецПроцедуры - -#КонецОбласти - diff --git "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP.xml" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP.xml" new file mode 100644 index 00000000..ecac04a1 --- /dev/null +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP.xml" @@ -0,0 +1,23 @@ + + + + + ОМ_КоннекторHTTP + + + ru + О м коннектор HTTP + + + + false + false + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" new file mode 100644 index 00000000..13e805ed --- /dev/null +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\232\320\276\320\275\320\275\320\265\320\272\321\202\320\276\321\200HTTP/Ext/Module.bsl" @@ -0,0 +1,24 @@ +#Область СлужебныйПрограммныйИнтерфейс + +//Используем мок ЮТест.Данные().HTTPСервисЗапрос + +// Регистрация теста в тестовой системе +Процедура ИсполняемыеСценарии() Экспорт + + // Добавляем тест 'ПроверкаМетодаЗапроса' в набор тестов + ЮТТесты.ДобавитьТест("ПроверкаМетодаЗапроса"); + +КонецПроцедуры + +// Процедура тестирования метода HTTP-запроса +Процедура ПроверкаМетодаЗапроса() Экспорт + + // Создание объекта HTTP-запроса с указанием метода GET + Запрос = ЮТест.Данные().HTTPСервисЗапрос().Метод("GET"); + + // Проверка, что метод запроса установлен корректно + ЮТест.ОжидаетЧто(Запрос.HTTPМетод).Равно("GET"); + +КонецПроцедуры + +#КонецОбласти \ No newline at end of file diff --git "a/src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" similarity index 90% rename from "src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" rename to "src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" index 0f85c67d..156e6a6f 100644 --- "a/src/cfe/YAXUnit/CommonModules/_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200.xml" @@ -2,11 +2,11 @@ - _ОбщегоНазаначенияСервер + ОМ_ОбщегоНазаначенияСервер ru - Общего назаначения сервер + О м общего назаначения сервер diff --git "a/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" new file mode 100644 index 00000000..9a104e54 --- /dev/null +++ "b/src/cfe/YAXUnit/CommonModules/\320\236\320\234_\320\236\320\261\321\211\320\265\320\263\320\276\320\235\320\260\320\267\320\260\320\275\320\260\321\207\320\265\320\275\320\270\321\217\320\241\320\265\321\200\320\262\320\265\321\200/Ext/Module.bsl" @@ -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'); + + ЮТест.ОжидаетЧто(Результат.Количество()).Равно(ОжидаемыйРезультат.Количество()); + + Для каждого Строка Из Результат Цикл + ЮТест.ОжидаетЧто(Строка.Период).Равно(ОжидаемыйРезультат[Результат.Индекс(Строка)].Период); + КонецЦикла; + +КонецПроцедуры + +Процедура ДобавитьСтрокуВТаблицу(Таблица, Дата) Экспорт + + Строка = Таблица.Добавить(); + Строка.Период = Дата; + +КонецПроцедуры + +#КонецОбласти + diff --git a/src/cfe/YAXUnit/ConfigDumpInfo.xml b/src/cfe/YAXUnit/ConfigDumpInfo.xml index ff0fc1aa..d2e6dc0f 100644 --- a/src/cfe/YAXUnit/ConfigDumpInfo.xml +++ b/src/cfe/YAXUnit/ConfigDumpInfo.xml @@ -1,164 +1,166 @@  - - - + - + - + - + - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -203,13 +205,13 @@ - - - + + + - + - + @@ -217,19 +219,19 @@ - + - + - + - - + + diff --git a/src/cfe/YAXUnit/Configuration.xml b/src/cfe/YAXUnit/Configuration.xml index 3bba30c3..e8d4418b 100644 --- a/src/cfe/YAXUnit/Configuration.xml +++ b/src/cfe/YAXUnit/Configuration.xml @@ -159,7 +159,8 @@ ЮТФильтрацияСлужебный ЮТЧитательСлужебный ЮТЧитательСлужебныйВызовСервера - _ОбщегоНазаначенияСервер + ОМ_ОбщегоНазаначенияСервер + ОМ_КоннекторHTTP ЮТHTTPServiceRequest ЮТHTTPСервисЗапрос ЮТRecordSet