diff --git a/documentation/blog/2024/05/07-engine-release.md b/documentation/blog/2024/05/07-engine-release.md new file mode 100644 index 00000000..cd3d1f63 --- /dev/null +++ b/documentation/blog/2024/05/07-engine-release.md @@ -0,0 +1,34 @@ +--- +title: YaxUnit. Версия 24.04 +authors: alkoleft +tags: [releases, yaxunit] +--- + +[Release 24.04](https://github.com/bia-technologies/yaxunit/releases/tag/24.04) + +## Новое в версии + +### Тестовые данные + +* [NEW] Метод `УстановитьСсылкуНового` в конструкторе объектов [#310](https://github.com/bia-technologies/yaxunit/issues/310), спасибо [@alexandr-yang](https://github.com/alexandr-yang) +* Удаление тестовых данных без учета прав [#309](https://github.com/bia-technologies/yaxunit/issues/309), спасибо [@goodwinvu](https://github.com/goodwinvu) + +### Зависимости + +* [NEW] Зависимости тестов [#314](https://github.com/bia-technologies/yaxunit/issues/314) +* [NEW] Добавить возможность указывать рабочий каталог в параметрах запуска [#313](https://github.com/bia-technologies/yaxunit/issues/313) +* [NEW] Зависимости тестов. Фабрика XDTO [#322](https://github.com/bia-technologies/yaxunit/issues/322) + +Подробнее о зависимостях вы можете узнать из [документации](/docs/features/dependencies) + +### Прочее + +* Рефакторинг механизма событий [#315](https://github.com/bia-technologies/yaxunit/issues/315) + Добавлена возможность создавать обработчики событий за пределами расширения движка, подробнее в [документации](docs/features/events) +* Добавлен шаблон PR + +## Исправленные ошибки + +* [Bug]: Не работает формат выбода ошибки HTML на Mac [#319](https://github.com/bia-technologies/yaxunit/issues/319), спасибо [@alexandr-yang](https://github.com/alexandr-yang) +* Мелкие исправления в документации [#320](https://github.com/bia-technologies/yaxunit/issues/320), спасибо [@alexandr-yang](https://github.com/alexandr-yang) +* [Bug]: Некорректное время результатов тестов в отчете формата allure, спасибо [@AlexPCRus](https://github.com/AlexPCRus) diff --git a/documentation/docs/features/events.md b/documentation/docs/features/events.md index 67c86fe0..5845eda2 100644 --- a/documentation/docs/features/events.md +++ b/documentation/docs/features/events.md @@ -67,3 +67,181 @@ YAxUnit также использует события для работы вн * Выполнять начальную подготовку базы или настройку движка перед прогонами * Реализовывать свои механизмы (например удаление данных с использованием подписок) * Формировать отчеты о тестировании online. + +### Подписка на события движка + +Для подключения своих обработчиков событий вам необходимо: + +1. Создание структуры подсистем + 1. Создать свою подсистему (не рекомендуется использовать подсистемы движка) с именем оканчивающимся на `ЮТПодключаемыеМодули`, например, `Тесты_ЮТПодключаемыеМодули`. + 2. У созданной подсистемы снять флаг `ВключатьВКомандныйИнтерфейс`. + 3. Внутри нее создать подсистему с именем `ОбработчикиСобытий`. + 4. Внутри подсистемы `ОбработчикиСобытий` создать подсистемы для нужной группы событий: + * Инициализация + * ЗагрузкаТестов + * ИсполнениеТестов +2. Добавить общий модуль (или использовать подходящий существующий) в котором будут размещены обработчики событий. +3. Сигнатура и описание обработчиков описаны ниже, примеры многих из них можно увидеть в движке. + +#### Пример + +Задача: необходимо по умолчанию включить настройку `ВТранзакции` для всех тестов. + +Для этого необходимо подписаться на событие [`УстановитьПараметрыЗапускаПоУмолчанию`](#установитьпараметрызапускапоумолчаниюпараметрызапуска), которое относится к блоку [`Инициализация`](#инициализация) + +Структура подсистем: +![Структура подсистем](images/test-settings-events-tree.png) + +```bsl title="НастройкаYAxUnit" +#Область СлужебныйПрограммныйИнтерфейс + +// Установить настройки по умолчанию. +// +// Параметры: +// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска +Процедура УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска) Экспорт + + ПараметрыЗапуска.settings.ВТранзакции = Истина; + +КонецПроцедуры + +#КонецОбласти + +``` + +## Описание событий движка + +### Инициализация + +#### УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска) + +`&НаКлиенте`. + +Подписка на это событие позволяет: + +* выполнить базовую настройку параметров запуска +* эту настройку можно переопределить параметрами запуска (json файл с тройками) +* может быть полезно при расширении возможностей движка новыми л механизмами +* обработчик может (а точнее, должен) изменять `ПараметрыЗапуска` + +Параметры: + +* ПараметрыЗапуска - см. [ЮТФабрика.ПараметрыЗапуска](/api/ЮТФабрика#параметрызапуска) + +#### ИнициализацияКонтекста(ДанныеКонтекста) + +`&НаСервере` и `&НаКлиенте`. + +Вызывается при первичной инициализации глобального контекста. +Используется для первоначального заполнения контекста, параметра `ДанныеКонтекста`. + +Параметры: + +* ДанныеКонтекста - Структура + +#### Инициализация(ПараметрыЗапуска) + +`&НаКлиенте` + +Вызывается после инициализации контекстов и загрузки настроек. +Позволяет выполнить настройку различных механизмов движка. + +:::note В этом обработчике нельзя менять параметр `ПараметрыЗапуска`. +::: + +Параметры: + +* ПараметрыЗапуска - см. [ЮТФабрика.ПараметрыЗапуска](/api/ЮТФабрика#параметрызапуска) + +### ЗагрузкаТестов + +#### ПередЧтениеСценариев() + +`&НаКлиенте` + +Вызывается перед загрузкой тестов. + +#### ПередЧтениемСценариевМодуля(МетаданныеМодуля) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Вызывается перед чтением сценариев конкретного модуля (вызовом метода `ИсполняемыеСценарии`). +Позволяет настроить базовые параметры перед чтением настроек тестов модуля. +Параметры: + +* МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля + +#### ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Позволяет настроить/обработать параметры загруженных настроек тестов модуля + +Параметры: + +* МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля +* ИсполняемыеСценарии - см. ЮТТестыСлужебный.СценарииМодуля + +#### ПослеЧтенияСценариев(Сценарии) + +`&НаКлиенте` + +Вызывается после загрузки всех тестов. + +#### ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) + +`&НаКлиенте` + +Вызывается после формирования исполняемых тестов, сформированных на основе зарегистрированных тестов. + +Например, из одного клиент-серверного теста формируется 2 исполняемых теста (для сервера и для клиента) + +### ИсполнениеТестов + +#### ПередВыполнениемТестов(ИсполняемыеМодули) + +`&НаКлиенте` + +Перед запуском всех тестов. + +#### ПередВсемиТестамиМодуля(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПередТестовымНабором(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПередКаждымТестом(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПослеКаждогоТеста(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПослеТестовогоНабора(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПослеВсехТестовМодуля(ОписаниеСобытия) + +`&НаКлиенте`/`&НаСервере` в зависимости от доступности модуля. + +Смотрите описание [выше](#события-тестов) + +#### ПослеВыполненияТестов(РезультатТестирования) + +`&НаКлиенте` + +После выполнения всех тестов. diff --git a/documentation/docs/features/images/test-settings-events-tree.png b/documentation/docs/features/images/test-settings-events-tree.png new file mode 100644 index 00000000..968ecf35 Binary files /dev/null and b/documentation/docs/features/images/test-settings-events-tree.png differ diff --git a/exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl index f99212e0..cc1d3aee 100644 --- a/exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl +++ b/exts/yaxunit/src/CommonModules/ЮТСобытияСлужебный/Module.bsl @@ -20,6 +20,15 @@ #Область Инициализация +// Подписка на это событие позволяет: +// +// * выполнить базовую настройку параметров запуска +// * эту настройку можно переопределить параметрами запуска (json файл с настройками) +// * может быть полезно при расширении возможностей движка новыми настраиваемыми механизмами +// * обработчик может (а точнее, должен) изменять `ПараметрыЗапуска` +// +// Параметры: +// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска Процедура УстановитьПараметрыЗапускаПоУмолчанию(ПараметрыЗапуска) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(ПараметрыЗапуска); @@ -27,13 +36,12 @@ КонецПроцедуры -Процедура Инициализация(ПараметрыЗапуска) Экспорт - - Параметры = ЮТКоллекции.ЗначениеВМассиве(ПараметрыЗапуска); - ВызватьПодключаемыйОбработчикСобытия("Инициализация", "Инициализация", Параметры); - -КонецПроцедуры - +// Вызывается при первичной инициализации глобального контекста. +// Используется для первоначального заполнения контекста, параметра `ДанныеКонтекста` +// Вызывается и для сервера, и для клиента +// +// Параметры: +// ДанныеКонтекста - Структура Процедура ИнициализацияКонтекста(ДанныеКонтекста) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(ДанныеКонтекста); @@ -41,6 +49,20 @@ КонецПроцедуры +// Вызывается после инициализации контекстов и загрузки настроек. +// Позволяет выполнить настройку различных механизмов движка. +// +// Важно: В этом обработчике нельзя менять параметр `ПараметрыЗапуска`. +// +// Параметры: +// ПараметрыЗапуска - см. ЮТФабрика.ПараметрыЗапуска +Процедура Инициализация(ПараметрыЗапуска) Экспорт + + Параметры = ЮТКоллекции.ЗначениеВМассиве(ПараметрыЗапуска); + ВызватьПодключаемыйОбработчикСобытия("Инициализация", "Инициализация", Параметры); + +КонецПроцедуры + #КонецОбласти #Область СобытияИсполненияТестов @@ -145,7 +167,7 @@ Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(ИсполняемыеМодули); - ВызватьПодключаемыйОбработчикСобытия("ПередВыполнениемТестов", "СобытияИсполненияТестов", Параметры); + ВызватьПодключаемыйОбработчикСобытия("ПередВыполнениемТестов", "ИсполнениеТестов", Параметры); КонецПроцедуры @@ -156,7 +178,7 @@ Процедура ПослеВыполненияТестов(РезультатТестирования) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(РезультатТестирования); - ВызватьПодключаемыйОбработчикСобытия("ПослеВыполненияТестов", "СобытияИсполненияТестов", Параметры); + ВызватьПодключаемыйОбработчикСобытия("ПослеВыполненияТестов", "ИсполнениеТестов", Параметры); КонецПроцедуры @@ -165,6 +187,7 @@ #Область СобытияЗагрузкиТестов // Обработка события "ПередЧтениеСценариев" +// Вызывается перед загрузкой тестов. Процедура ПередЧтениеСценариев() Экспорт Параметры = Новый Массив(); @@ -173,7 +196,9 @@ КонецПроцедуры // Обработчик события "ПередЧтениемСценариевМодуля" -// Позволяет настроить базовые параметры перед чтением настроек тестов модуля +// Вызывается перед чтением сценариев конкретного модуля (вызовом метода `ИсполняемыеСценарии`). +// Позволяет настроить базовые параметры перед чтением настроек тестов модуля. +// // Параметры: // МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт @@ -187,7 +212,7 @@ // Позволяет настроить/обработать параметры загруженных настроек тестов модуля // Параметры: // МетаданныеМодуля - см. ЮТФабрикаСлужебный.ОписаниеМодуля -// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля +// ИсполняемыеСценарии - см. ЮТТестыСлужебный.СценарииМодуля Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт Параметры = ЮТКоллекции.ЗначениеВМассиве(МетаданныеМодуля, ИсполняемыеСценарии); @@ -251,7 +276,7 @@ Если ПропуститьОбработчикТестовогоМодуля Тогда Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеСобытия); - Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "СобытияИсполненияТестов", Параметры); + Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "ИсполнениеТестов", Параметры); ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки); Иначе ВызватьОбработкуСобытияИсполненияТестов(ИмяСобытия, ОписаниеСобытия); @@ -266,11 +291,11 @@ Параметры = ЮТКоллекции.ЗначениеВМассиве(ОписаниеСобытия); Если ЭтоСобытиеПеред(ИмяСобытия) Тогда - Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "СобытияИсполненияТестов", Параметры); + Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "ИсполнениеТестов", Параметры); ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия); Иначе ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия); - Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "СобытияИсполненияТестов", Параметры); + Ошибки = ВызватьПодключаемыйОбработчикСобытия(ИмяСобытия, "ИсполнениеТестов", Параметры); КонецЕсли; ЗарегистрироватьОшибкиСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибки); diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo index 272905be..829499ea 100644 --- a/exts/yaxunit/src/Configuration/Configuration.mdo +++ b/exts/yaxunit/src/Configuration/Configuration.mdo @@ -20,7 +20,7 @@ 8.3.10 AddOn Russian - 24.03 + 24.04 Русский Adopted diff --git a/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/СобытияИсполненияТестов/CommandInterface.cmi b/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/ИсполнениеТестов/CommandInterface.cmi similarity index 100% rename from exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/СобытияИсполненияТестов/CommandInterface.cmi rename to exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/ИсполнениеТестов/CommandInterface.cmi diff --git a/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/СобытияИсполненияТестов/СобытияИсполненияТестов.mdo b/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/ИсполнениеТестов/ИсполнениеТестов.mdo similarity index 84% rename from exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/СобытияИсполненияТестов/СобытияИсполненияТестов.mdo rename to exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/ИсполнениеТестов/ИсполнениеТестов.mdo index 1acdbce1..cabd5580 100644 --- a/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/СобытияИсполненияТестов/СобытияИсполненияТестов.mdo +++ b/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/Subsystems/ИсполнениеТестов/ИсполнениеТестов.mdo @@ -1,9 +1,9 @@ - СобытияИсполненияТестов + ИсполнениеТестов ru - События исполнения тестов + Исполнение тестов true CommonModule.МокитоСлужебный diff --git a/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/ОбработчикиСобытий.mdo b/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/ОбработчикиСобытий.mdo index aca9b957..ee846d2a 100644 --- a/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/ОбработчикиСобытий.mdo +++ b/exts/yaxunit/src/Subsystems/ЮТПодключаемыеМодули/Subsystems/ОбработчикиСобытий/ОбработчикиСобытий.mdo @@ -13,6 +13,6 @@ CommonModule.ЮТЛогированиеСлужебный ЗагрузкаТестов Инициализация - СобытияИсполненияТестов + ИсполнениеТестов Subsystem.ЮТПодключаемыеМодули