1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-03-17 20:48:01 +02:00

* Рефакторинг чтения тестов

* Установка настроек выполнения на модуль
This commit is contained in:
alkoleft 2023-05-15 23:59:01 +03:00
parent 7fb5b12438
commit 577194e422
4 changed files with 53 additions and 32 deletions

View File

@ -47,6 +47,10 @@
Значение = КонтекстИсполнения.Набор.НастройкиВыполнения[ИмяНастройки];
ИначеЕсли КонтекстИсполнения.Модуль <> Неопределено И КонтекстИсполнения.Модуль.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = КонтекстИсполнения.Модуль.НастройкиВыполнения[ИмяНастройки];
Иначе
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();

View File

@ -367,12 +367,15 @@
// Возвращаемое значение:
// Структура - Исполняемые сценарии:
// * ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы модуля
// * НастройкиВыполнения- Структура - Настройки исполнения теста
Функция ИсполняемыеСценарии(МетаданныеМодуля)
Структура = Новый Структура;
Структура.Вставить("ТестовыеНаборы", Новый Массив());
Структура.Вставить("НастройкиВыполнения", Новый Структура());
Набор = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
Набор.НастройкиВыполнения = Структура.НастройкиВыполнения; // Общие настройки с набором по умолчанию
Структура.ТестовыеНаборы.Добавить(Набор);
Возврат Структура;

View File

@ -198,12 +198,14 @@
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки
// * НастройкиВыполнения- Структура - Настройки исполнения теста
Функция ОписаниеТестовогоМодуля(МетаданныеМодуля, НаборыТестов) Экспорт
Описание = Новый Структура;
Описание.Вставить("МетаданныеМодуля", МетаданныеМодуля);
Описание.Вставить("НаборыТестов", НаборыТестов);
Описание.Вставить("Ошибки", Новый Массив);
Описание.Вставить("НастройкиВыполнения", Новый Структура());
Возврат Описание;

View File

@ -31,16 +31,15 @@
ЮТФильтрация.УстановитьКонтекст(ПараметрыЗапускаТестов);
Для Каждого ОписаниеМодуля Из ТестовыеМодули() Цикл
Для Каждого МетаданныеМодуля Из ТестовыеМодули() Цикл
НаборыТестов = ТестовыеНаборыМодуля(ОписаниеМодуля, ПараметрыЗапускаТестов);
ОписаниеТестовогоМодуля = ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапускаТестов);
Если НаборыТестов = Неопределено Тогда
Если ОписаниеТестовогоМодуля = Неопределено Тогда
Продолжить;
КонецЕсли;
ТестовыйМодуль = ЮТФабрика.ОписаниеТестовогоМодуля(ОписаниеМодуля, НаборыТестов);
Результат.Добавить(ТестовыйМодуль);
Результат.Добавить(ОписаниеТестовогоМодуля);
КонецЦикла;
@ -51,17 +50,19 @@
// ПрочитатьНаборТестов
// Читает набор тестов из модуля
// Параметры:
// ОписаниеМодуля - см. ЮТФабрика.ОписаниеМодуля
// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
//
// Возвращаемое значение:
// Неопределено, Массив из см. ЮТФабрика.ОписаниеТестовогоНабора- Если прочитано, то будет возвращено описание наборов
Функция ИсполняемыеСценарииМодуля(ОписаниеМодуля) Экспорт
// - Неопределено - Если это не тестовый модуль
// - см. ЮТФабрика.ОписаниеТестовогоМодуля
Функция ИсполняемыеСценарииМодуля(МетаданныеМодуля) Экспорт
ЭтоТестовыйМодуль = Истина;
ОписаниеТестовогоМодуля = ЮТФабрика.ОписаниеТестовогоМодуля(МетаданныеМодуля, Неопределено);
ЮТТесты.ПередЧтениемСценариевМодуля(ОписаниеМодуля);
ЮТТесты.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
ПолноеИмяМетода = ОписаниеМодуля.Имя + "." + ИмяМетодаСценариев();
ПолноеИмяМетода = МетаданныеМодуля.Имя + "." + ИмяМетодаСценариев();
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода);
Если Ошибка <> Неопределено Тогда
@ -81,26 +82,25 @@
Если Ошибка <> Неопределено Тогда
Данные = Новый Массив(); // Фиксируем, чтобы отобразить в отчете
Описание = ЮТФабрика.ОписаниеТестовогоНабора(ОписаниеМодуля.Имя);
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(Описание, "Ошибка формирования списка тестовых методов", Ошибка);
Данные.Добавить(Описание);
НаборПоУмолчанию = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуЧтенияТестов(НаборПоУмолчанию, "Ошибка формирования списка тестовых методов", Ошибка);
ОписаниеТестовогоМодуля.НаборыТестов.Добавить(НаборПоУмолчанию);
ИначеЕсли ЭтоТестовыйМодуль Тогда
ЮТТесты.ПослеЧтенияСценариевМодуля();
Сценарии = ЮТТесты.СценарииМодуля();
Данные = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, ОписаниеМодуля);
ОписаниеТестовогоМодуля.НаборыТестов = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, МетаданныеМодуля);
ОписаниеТестовогоМодуля.НастройкиВыполнения = Сценарии.НастройкиВыполнения;
Иначе
Данные = Неопределено;
ОписаниеТестовогоМодуля = Неопределено;
КонецЕсли;
Возврат Данные;
Возврат ОписаниеТестовогоМодуля;
КонецФункции
@ -171,34 +171,46 @@
КонецФункции
Функция ТестовыеНаборыМодуля(Модуль, ПараметрыЗапуска)
Функция ТестовыеНаборыМодуля(МетаданныеМодуля, ПараметрыЗапуска)
// TODO Фильтрация по путям
НаборыТестов = Неопределено;
ОписаниеМодуля = Неопределено;
#Если ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
Если Модуль.КлиентОбычноеПриложение ИЛИ Модуль.КлиентУправляемоеПриложение Тогда
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
ИначеЕсли Модуль.Сервер Тогда
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
Если МетаданныеМодуля.КлиентОбычноеПриложение ИЛИ МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
ИначеЕсли МетаданныеМодуля.Сервер Тогда
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
ЮТЛогирование.ВывестиСерверныеСообщения();
КонецЕсли;
#ИначеЕсли Сервер Тогда
Если Модуль.Сервер Тогда
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
Если МетаданныеМодуля.Сервер Тогда
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
Иначе
ВызватьИсключение "Чтение списка тестов модуля в недоступном контексте";
КонецЕсли;
#ИначеЕсли Клиент Тогда
Если Модуль.КлиентУправляемоеПриложение Тогда
НаборыТестов = ИсполняемыеСценарииМодуля(Модуль);
ИначеЕсли Модуль.Сервер Тогда
НаборыТестов = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(Модуль);
Если МетаданныеМодуля.КлиентУправляемоеПриложение Тогда
ОписаниеМодуля = ИсполняемыеСценарииМодуля(МетаданныеМодуля);
ИначеЕсли МетаданныеМодуля.Сервер Тогда
ОписаниеМодуля = ЮТЧитательСервер.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
ЮТЛогирование.ВывестиСерверныеСообщения();
КонецЕсли;
#КонецЕсли
Возврат НаборыТестов;
Возврат ОписаниеМодуля;
КонецФункции