1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2024-12-03 08:45:31 +02:00

Рефакторинг исполнителя

This commit is contained in:
alkoleft 2023-08-01 01:50:25 +03:00
parent 5af313e4aa
commit 38c8e951d6
5 changed files with 121 additions and 56 deletions

View File

@ -64,13 +64,61 @@
Параметры.Вставить("ПараметрыЗапуска");
Параметры.Вставить("Цепочка", Новый Массив());
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
Параметры.Вставить("КоллекцияКатегорийНаборов");
Параметры.Вставить("ИсполняемыеТестовыеМодули");
Параметры.Вставить("РезультатыТестирования");
Возврат Параметры;
КонецФункции
Функция ВыполнитьТестыМодуля(ТестовыйМодуль) Экспорт
Результаты = Новый Массив();
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
КлиентскиеНаборы = Новый Массив();
СерверныеНаборы = Новый Массив();
ПропущенныеНаборы = Новый Массив();
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
Если НЕ Набор.Выполнять Тогда
ПропущенныеНаборы.Добавить(Набор);
Продолжить;
КонецЕсли;
РежимИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
Если РежимИсполнения = КонтекстыИсполнения.Клиент Тогда
КлиентскиеНаборы.Добавить(Набор);
ИначеЕсли РежимИсполнения = КонтекстыИсполнения.Сервер Тогда
СерверныеНаборы.Добавить(Набор);
Иначе
ПропущенныеНаборы.Добавить(Набор);
КонецЕсли;
КонецЦикла;
ТестовыйМодульОблегченный = ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль);
ТестовыйМодульОблегченный.НаборыТестов = Новый Массив();
Если ЗначениеЗаполнено(КлиентскиеНаборы) Тогда
Результаты = ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(КлиентскиеНаборы, ТестовыйМодульОблегченный);
КонецЕсли;
Если ЗначениеЗаполнено(СерверныеНаборы) Тогда
Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(СерверныеНаборы, ТестовыйМодульОблегченный);
ЮТЛогирование.ВывестиСерверныеСообщения();
ЮТОбщий.ДополнитьМассив(Результаты, Результат);
КонецЕсли;
ЮТОбщий.ДополнитьМассив(Результаты, ПропущенныеНаборы);
Возврат Результаты;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@ -117,45 +165,38 @@
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули);
КоллекцияКатегорийНаборов = Новый Массив();
ИсполняемыеТестовыеМодули = Новый Массив();
Для Каждого ТестовыйМодуль Из ТестовыеМодули Цикл
КатегорииНаборов = КатегорииНаборовТестовМодуля(ТестовыйМодуль);
КоллекцияКатегорийНаборов.Добавить(КатегорииНаборов);
ИсполняемыйТестовыйМодуль = ИсполняемыйТестовыйМодуль(ТестовыйМодуль);
ИсполняемыеТестовыеМодули.Добавить(ИсполняемыйТестовыйМодуль);
// TODO
КонецЦикла;
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов);
ДополнительныеПараметры.КоллекцияКатегорийНаборов = КоллекцияКатегорийНаборов;
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули);
ДополнительныеПараметры.ИсполняемыеТестовыеМодули = ИсполняемыеТестовыеМодули;
ВызватьСледующийОбработчик(ДополнительныеПараметры, КоллекцияКатегорийНаборов);
ВызватьСледующийОбработчик(ДополнительныеПараметры, ИсполняемыеТестовыеМодули);
КонецПроцедуры
Процедура ОбработчикВыполнитьТестирование(Результат, ДополнительныеПараметры) Экспорт
ЮТСобытия.ПередВыполнениемТестов(ДополнительныеПараметры.КоллекцияКатегорийНаборов);
ЮТСобытия.ПередВыполнениемТестов(ДополнительныеПараметры.ИсполняемыеТестовыеМодули);
РезультатыТестирования = Новый Массив();
КоллекцияКатегорийНаборов = ДополнительныеПараметры.КоллекцияКатегорийНаборов;
Для Каждого КатегорииНаборов Из КоллекцияКатегорийНаборов Цикл
Для Каждого ТестовыйМодуль Из ДополнительныеПараметры.ИсполняемыеТестовыеМодули Цикл
Результат = ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Клиентские, КатегорииНаборов.ТестовыйМодуль);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Серверные, КатегорииНаборов.ТестовыйМодуль);
ЮТЛогирование.ВывестиСерверныеСообщения();
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, КатегорииНаборов.Пропущенные);
РезультатыПрогонаМодуля = ВыполнитьТестыМодуля(ТестовыйМодуль);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, РезультатыПрогонаМодуля);
КонецЦикла;
ЮТСобытия.ПослеВыполненияТестов(РезультатыТестирования);
ДополнительныеПараметры.РезультатыТестирования = РезультатыТестирования;
ВызватьСледующийОбработчик(ДополнительныеПараметры);
ВызватьСледующийОбработчик(ДополнительныеПараметры, РезультатыТестирования);
КонецПроцедуры
@ -228,11 +269,9 @@
КонецПроцедуры
Функция КатегорииНаборовТестовМодуля(ТестовыйМодуль)
Функция ИсполняемыйТестовыйМодуль(ТестовыйМодуль)
КатегорииНаборов = ЮТФабрика.ОписаниеКатегорияНабораТестов(ТестовыйМодуль);
ИсполняемыеТестовыеНаборы = Новый Массив;
ИсполняемыйТестовыйМодуль = ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль);
Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл
@ -262,13 +301,13 @@
Если НаборыКонтекстов.Количество() Тогда
Для Каждого Элемент Из НаборыКонтекстов Цикл
ИсполняемыеТестовыеНаборы.Добавить(Элемент.Значение);
ИсполняемыйТестовыйМодуль.НаборыТестов.Добавить(Элемент.Значение);
КонецЦикла;
Иначе
// TODO. Корякин А. 2021.11.24 А надо ли добавлять при отсутствии тестов
ИсполняемыеТестовыеНаборы.Добавить(ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль));
ИсполняемыйТестовыйМодуль.НаборыТестов.Добавить(ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль));
КонецЕсли;
@ -278,7 +317,7 @@
КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля);
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
Для Каждого Набор Из ИсполняемыеТестовыеНаборы Цикл
Для Каждого Набор Из ИсполняемыйТестовыйМодуль.НаборыТестов Цикл
КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
@ -299,24 +338,9 @@
КонецЦикла;
КонецЕсли;
Если НЕ Набор.Выполнять Тогда
КатегорииНаборов.Пропущенные.Добавить(Набор);
Продолжить;
КонецЕсли;
Если КонтекстИсполнения = КонтекстыИсполнения.Сервер Тогда
КатегорииНаборов.Серверные.Добавить(Набор);
ИначеЕсли КонтекстИсполнения = КонтекстыИсполнения.Клиент Тогда
КатегорииНаборов.Клиентские.Добавить(Набор);
КонецЕсли;
КонецЦикла;
Возврат КатегорииНаборов;
Возврат ИсполняемыйТестовыйМодуль;
КонецФункции
@ -374,4 +398,20 @@
КонецПроцедуры
Функция НаборыТестовРежима(ТестовыйМодуль, ОжидаемыйРежимИсполнения)
Результат = Новый Массив();
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
Если Набор.Выполнять И ЮТФабрика.КонтекстИсполнения(Набор.Режим) = ОжидаемыйРежимИсполнения Тогда
Результат.Добавить(Набор);
КонецЕсли;
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти

View File

@ -21,7 +21,7 @@
// Выполняет тесты группы наборов, соответствующих одному режиму выполнения (клиент/сервер)
// Параметры:
// Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы тестов модуля
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
//
// Возвращаемое значение:
// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов с заполненной информацией о выполнении

View File

@ -164,19 +164,19 @@
// Обработка события "ПослеФормированияИсполняемыхНаборовТестов"
// Параметры:
// КоллекцияКатегорийНаборов - Массив из см. ЮТФабрика.ОписаниеКатегорияНабораТестов - Набор исполняемых наборов
Процедура ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов) Экспорт
// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов
Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт
Количество = 0;
Для Каждого Наборы Из КоллекцияКатегорийНаборов Цикл
Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл
Для Каждого Набор Из Наборы.Клиентские Цикл
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
КонецЦикла;
Для Каждого Набор Из Наборы.Серверные Цикл
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
Если Набор.Выполнять Тогда
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
КонецЕсли;
КонецЦикла;
КонецЦикла;

View File

@ -216,10 +216,10 @@
// Обработка события "ПослеФормированияИсполняемыхНаборовТестов"
// Параметры:
// КоллекцияКатегорийНаборов - Массив из см. ЮТФабрика.ОписаниеКатегорияНабораТестов - Набор исполняемых наборов
Процедура ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов) Экспорт
// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов
Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(КоллекцияКатегорийНаборов);
Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеТестовыеМодули);
ВызватьОбработчикРасширения("ПослеФормированияИсполняемыхНаборовТестов", Параметры);
КонецПроцедуры

View File

@ -278,6 +278,30 @@
КонецФункции
// Описание исполняемого тестового модуля.
// Содержит всю необходимую информацию для прогона тестов, а также данные результата
// Параметры:
// ТестовыйМодуль - см. ОписаниеТестовогоМодуля
//
// Возвращаемое значение:
// Структура - Описание тестового модуля:
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки
// * НастройкиВыполнения- Структура - Настройки исполнения теста
Функция ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль) Экспорт
Описание = Новый Структура;
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
Описание.Вставить("НаборыТестов", Новый Массив);
Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(ТестовыйМодуль.Ошибки));
Описание.Вставить("НастройкиВыполнения", ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль.НастройкиВыполнения));
Возврат Описание;
КонецФункции
// ОписаниеИсполняемогоНабораТестов
// Возвращает описание исполняемого тестового набора.
// Содержит данные необходимые для выполнения прогона тестов
@ -307,6 +331,7 @@
Описание.Вставить("Теги", НаборТестов.Теги);
Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(НаборТестов.Ошибки));
Описание.Вставить("Режим", "");
Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль);
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
Описание.Вставить("Тесты", Новый Массив);
Описание.Вставить("Выполнять", Описание.Ошибки.Количество() = 0);