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

View File

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

View File

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