1
0
mirror of https://github.com/bia-technologies/yaxunit.git synced 2025-02-19 19:59:52 +02:00

Работа без использования синхронных методов

This commit is contained in:
alkoleft 2023-04-07 01:07:02 +03:00
parent 2f78bd07f9
commit 9b89c46fcc
18 changed files with 569 additions and 96 deletions

View File

@ -32,7 +32,7 @@
Процедура ВыполнитьМодульноеТестирование(Параметры = Неопределено) Экспорт
Если Параметры = Неопределено Тогда
Параметры = ЮТПараметрыЗапуска.ПараметрыЗапуска(ПараметрЗапуска);
Параметры = ЮТПараметрыЗапуска.ПараметрыЗапуска(ПараметрЗапуска, Неопределено);
КонецЕсли;
Если НЕ Параметры.ВыполнятьМодульноеТестирование Тогда
@ -44,7 +44,7 @@
ЮТСобытия.Инициализация(Параметры);
// Повторно сохраним для передачи на сервер
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
ЮТКонтекст.УстановитьКонтекстИсполнения(ДанныеКонтекстаИсполнения());
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
ЮТСобытия.ПередЧтениеСценариев();
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
@ -327,20 +327,6 @@
КонецПроцедуры
// Данные контекста исполнения.
//
// Возвращаемое значение:
// Структура - Данные контекста исполнения:
// * Уровень - Строка
Функция ДанныеКонтекстаИсполнения()
Контекст = Новый Структура();
Контекст.Вставить("Уровень", "");
Возврат Контекст;
КонецФункции
// Описание категория набора тестов.
//
// Параметры:

View File

@ -0,0 +1,302 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
Процедура ВыполнитьМодульноеТестирование() Экспорт
ПараметрыИсполнения = ПараметрыИсполнения();
ПараметрыИсполнения.АргументыЗапуска = ПараметрЗапуска;
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикЗагрузитьПараметры", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикАнализПараметровЗапуска", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикЗагрузитьТесты", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикВыполнитьТестирование", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикСохранитьОтчет", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикСохранитьКодВозврата", ЭтотОбъект, ПараметрыИсполнения));
ПараметрыИсполнения.Цепочка.Добавить(Новый ОписаниеОповещения("ОбработчикЗавершить", ЭтотОбъект, ПараметрыИсполнения));
ВызватьСледующийОбработчик(ПараметрыИсполнения);
КонецПроцедуры
Процедура ОбработчикЗагрузитьПараметры(Результат, ДополнительныеПараметры) Экспорт
Обработчик = СледующийОбработчик(ДополнительныеПараметры);
ЮТПараметрыЗапуска.ПараметрыЗапуска(ДополнительныеПараметры.АргументыЗапуска, Обработчик);
КонецПроцедуры
Процедура ОбработчикАнализПараметровЗапуска(ПараметрыЗапуска, ДополнительныеПараметры) Экспорт
ДополнительныеПараметры.ПараметрыЗапуска = ПараметрыЗапуска;
Если НЕ ПараметрыЗапуска.ВыполнятьМодульноеТестирование Тогда
Возврат;
КонецЕсли;
ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработчикЗагрузитьТесты(Результат, ДополнительныеПараметры) Экспорт
Параметры = ДополнительныеПараметры.ПараметрыЗапуска;
ЮТКонтекст.ИнициализироватьКонтекст();
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
ЮТСобытия.Инициализация(Параметры);
// Повторно сохраним для передачи на сервер
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
ЮТСобытия.ПередЧтениеСценариев();
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули);
КоллекцияКатегорийНаборов = Новый Массив();
Для Каждого ТестовыйМодуль Из ТестовыеМодули Цикл
КатегорииНаборов = КатегорииНаборовТестовМодуля(ТестовыйМодуль);
КоллекцияКатегорийНаборов.Добавить(КатегорииНаборов);
КонецЦикла;
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов);
ДополнительныеПараметры.КоллекцияКатегорийНаборов = КоллекцияКатегорийНаборов;
ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработчикВыполнитьТестирование(Результат, ДополнительныеПараметры) Экспорт
РезультатыТестирования = Новый Массив();
КоллекцияКатегорийНаборов = ДополнительныеПараметры.КоллекцияКатегорийНаборов;
Для Каждого КатегорииНаборов Из КоллекцияКатегорийНаборов Цикл
Результат = Новый Массив;// ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Клиентские, КатегорииНаборов.ТестовыйМодуль);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Серверные, КатегорииНаборов.ТестовыйМодуль);
ЮТЛогирование.ВывестиСерверныеСообщения();
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, КатегорииНаборов.Пропущенные);
КонецЦикла;
ДополнительныеПараметры.РезультатыТестирования = РезультатыТестирования;
ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработчикСохранитьОтчет(Результат, ДополнительныеПараметры) Экспорт
Обработчик = СледующийОбработчик(ДополнительныеПараметры);
ЮТОтчет.СформироватьОтчет(ДополнительныеПараметры.РезультатыТестирования, ДополнительныеПараметры.ПараметрыЗапуска, Обработчик);
КонецПроцедуры
Процедура ОбработчикСохранитьКодВозврата(Результат, ДополнительныеПараметры) Экспорт
ВызватьСледующийОбработчик(ДополнительныеПараметры);
КонецПроцедуры
Процедура ОбработчикЗавершить(Результат, ДополнительныеПараметры) Экспорт
Параметры = ДополнительныеПараметры.ПараметрыЗапуска;
Если Параметры.showReport Тогда
ПоказатьОтчет(ДополнительныеПараметры.РезультатыТестирования, Параметры);
ИначеЕсли Параметры.CloseAfterTests Тогда
ПрекратитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
Процедура ВызватьОбработчик(Обработчик, Результат) Экспорт
Если Обработчик <> Неопределено Тогда
ВыполнитьОбработкуОповещения(Обработчик, Результат);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
Обработчик = СледующийОбработчик(ПараметрыИсполнения);
ВыполнитьОбработкуОповещения(Обработчик, Результат);
КонецПроцедуры
Функция СледующийОбработчик(ПараметрыИсполнения)
ПараметрыИсполнения.ИндексСледующегоОбработчика = ПараметрыИсполнения.ИндексСледующегоОбработчика + 1;
Возврат ПараметрыИсполнения.Цепочка[ПараметрыИсполнения.ИндексСледующегоОбработчика];
КонецФункции
Функция ПараметрыИсполнения()
Параметры = Новый Структура();
Параметры.Вставить("АргументыЗапуска");
Параметры.Вставить("ПараметрыЗапуска");
Параметры.Вставить("Цепочка", Новый Массив());
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
Параметры.Вставить("КоллекцияКатегорийНаборов");
Параметры.Вставить("РезультатыТестирования");
Возврат Параметры;
КонецФункции
Функция КатегорииНаборовТестовМодуля(ТестовыйМодуль)
КатегорииНаборов = ОписаниеКатегорияНабораТестов(ТестовыйМодуль);
ИсполняемыеТестовыеНаборы = Новый Массив;
Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл
НаборыКонтекстов = Новый Структура;
ТестыНабора = ЮТОбщий.ЗначениеСтруктуры(ТестовыйНабор, "Тесты", Новый Массив());
Для Каждого Тест Из ТестыНабора Цикл
Для Каждого Контекст Из Тест.КонтекстВызова Цикл
Если НЕ НаборыКонтекстов.Свойство(Контекст) Тогда
ИсполняемыйНабор = ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль);
ИсполняемыйНабор.Режим = Контекст;
НаборыКонтекстов.Вставить(Контекст, ИсполняемыйНабор);
Иначе
ИсполняемыйНабор = НаборыКонтекстов[Контекст];
КонецЕсли;
ИсполняемыйТест = ЮТФабрика.ОписаниеИсполняемогоТеста(Тест, Контекст, ТестовыйМодуль);
ИсполняемыйНабор.Тесты.Добавить(ИсполняемыйТест);
КонецЦикла;
КонецЦикла;
Если НаборыКонтекстов.Количество() Тогда
Для Каждого Элемент Из НаборыКонтекстов Цикл
ИсполняемыеТестовыеНаборы.Добавить(Элемент.Значение);
КонецЦикла;
Иначе
// TODO. Корякин А. 2021.11.24 А надо ли добавлять при отсутствии тестов
ИсполняемыеТестовыеНаборы.Добавить(ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль));
КонецЕсли;
КонецЦикла;
КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения();
КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля);
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
Для Каждого Набор Из ИсполняемыеТестовыеНаборы Цикл
КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
ОшибкаКонтекста = Неопределено;
Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Неподдерживаемый режим запуска";
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
КонецЕсли;
Если ОшибкаКонтекста <> Неопределено Тогда
Набор.Выполнять = Ложь;
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста);
Для Каждого Тест Из Набор.Тесты Цикл
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста);
КонецЦикла;
КонецЕсли;
Если НЕ Набор.Выполнять Тогда
КатегорииНаборов.Пропущенные.Добавить(Набор);
Продолжить;
КонецЕсли;
Если КонтекстИсполнения = КонтекстыИсполнения.Сервер Тогда
КатегорииНаборов.Серверные.Добавить(Набор);
ИначеЕсли КонтекстИсполнения = КонтекстыИсполнения.Клиент Тогда
КатегорииНаборов.Клиентские.Добавить(Набор);
КонецЕсли;
КонецЦикла;
Возврат КатегорииНаборов;
КонецФункции
// Описание категория набора тестов.
//
// Параметры:
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
//
// Возвращаемое значение:
// Структура - Описание категория набора тестов:
// * ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
// * Клиентские - Массив из ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// * Серверные - Массив из ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// * Пропущенные - Массив из ЮТФабрика.ОписаниеИсполняемогоНабораТестов
Функция ОписаниеКатегорияНабораТестов(ТестовыйМодуль)
КатегорииНаборов = Новый Структура();
КатегорииНаборов.Вставить("ТестовыйМодуль", ТестовыйМодуль);
КатегорииНаборов.Вставить("Клиентские", Новый Массив());
КатегорииНаборов.Вставить("Серверные", Новый Массив());
КатегорииНаборов.Вставить("Пропущенные", Новый Массив());
Возврат КатегорииНаборов;
КонецФункции
Процедура ПоказатьОтчет(РезультатыТестирования, Параметры)
Данные = Новый Структура("РезультатыТестирования, ПараметрыЗапуска", РезультатыТестирования, Параметры);
АдресДанных = ПоместитьВоВременноеХранилище(Данные);
ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.Основная", Новый Структура("АдресХранилища", АдресДанных));
КонецПроцедуры
#КонецОбласти

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c9bf0e7a-6503-44eb-bef0-b37e1d3c6e22">
<name>ЮТИсполнительКлиент</name>
<synonym>
<key>ru</key>
<value>Исполнитель клиент</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -0,0 +1,77 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
#Область Универсальные
// Возвращает соответствие элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции.
//
// Параметры:
// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки.
// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия.
// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции.
// Возвращаемое значение:
// Соответствие Из Произвольный - полученное соответствие.
Функция ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт
Результат = Новый Соответствие();
Для Каждого ЭлементКоллекции Из Коллекция Цикл
Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]);
Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
// Возвращает структуру элементов переданной коллекции, в качестве ключей выступают значения указанного поля элементов коллекции.
//
// Параметры:
// Коллекция - Произвольный - значение, для которого определен итератор, и возможно обращение к полям элементов через квадратные скобки.
// ИмяПоляКлюча - Строка - имя поля элемента коллекции, которое будет ключом соответствия.
// ИмяПоляЗначения - Строка - если указан, значениями результата будут не элементы, а значения соответствующих полей элементов коллекции.
// Возвращаемое значение:
// Структура Из Произвольный - полученная структура.
Функция ВСтруктуру(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт
Результат = Новый Структура();
Для Каждого ЭлементКоллекции Из Коллекция Цикл
Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]);
Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="eafc93a0-f4ac-442f-b3c8-4e9a41d99e9c">
<name>ЮТКоллекции</name>
<synonym>
<key>ru</key>
<value>Коллекции</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -0,0 +1,50 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
Функция ЗначениеНастройкиТеста(ИмяНастройки, ОписаниеТеста, ОписаниеТестовогоНабора, ЗначениеПоУмолчанию) Экспорт
Значение = ЗначениеПоУмолчанию;
Если ОписаниеТеста.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТеста.НастройкиВыполнения[ИмяНастройки];
ИначеЕсли ОписаниеТестовогоНабора.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТестовогоНабора.НастройкиВыполнения[ИмяНастройки];
Иначе
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();
Если ГлобальныеНастройки.Свойство(ИмяНастройки) Тогда
Значение = ГлобальныеНастройки[ИмяНастройки];
КонецЕсли;
КонецЕсли;
Возврат Значение;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="a3405948-b02e-4e4b-8195-dd51bf07a4c4">
<name>ЮТНастройкиВыполнения</name>
<synonym>
<key>ru</key>
<value>Параметры</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -527,17 +527,8 @@
// Соответствие Из Произвольный - полученное соответствие.
Функция КоллекцияВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения = Неопределено) Экспорт
Результат = Новый Соответствие();
Для Каждого ЭлементКоллекции Из Коллекция Цикл
Значение = ?(ИмяПоляЗначения = Неопределено, ЭлементКоллекции, ЭлементКоллекции[ИмяПоляЗначения]);
Результат.Вставить(ЭлементКоллекции[ИмяПоляКлюча], Значение);
КонецЦикла;
Возврат Результат;
ВызовУстаревшегоМетода("ЮТОбщий.КоллекцияВСоответствие", "ЮТКоллекции.ВСоответствие");
Возврат ЮТКоллекции.ВСоответствие(Коллекция, ИмяПоляКлюча, ИмяПоляЗначения);
КонецФункции
@ -572,7 +563,7 @@
Возврат Ложь;
КонецЕсли;
Для каждого КлючИЗначение Из Данные1 Цикл
Для Каждого КлючИЗначение Из Данные1 Цикл
СтароеЗначение = Неопределено;
Если НЕ Данные2.Свойство(КлючИЗначение.Ключ, СтароеЗначение)
@ -593,7 +584,7 @@
КлючиНовогоСоответствия = Новый Соответствие;
Для каждого КлючИЗначение Из Данные1 Цикл
Для Каждого КлючИЗначение Из Данные1 Цикл
КлючиНовогоСоответствия.Вставить(КлючИЗначение.Ключ, Истина);
СтароеЗначение = Данные2.Получить(КлючИЗначение.Ключ);
@ -602,7 +593,7 @@
КонецЕсли;
КонецЦикла;
Для каждого КлючИЗначение Из Данные2 Цикл
Для Каждого КлючИЗначение Из Данные2 Цикл
Если КлючиНовогоСоответствия[КлючИЗначение.Ключ] = Неопределено Тогда
Возврат Ложь;
КонецЕсли;

View File

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

View File

@ -16,24 +16,21 @@
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
#Область СлужебныйПрограммныйИнтерфейс
// ПараметрыЗапуска
// Возвращает загруженные параметры запуска тестирования
// Параметры:
// ПараметрыЗапускаСтрокой - Строка - Параметры запуска приложения
// Обработчик - ОписаниеОповещения
//
// Возвращаемое значение:
// см. ЮТФабрика.ПараметрыЗапуска
Функция ПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой) Экспорт
Функция ПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой, Обработчик) Экспорт
Попытка
Параметры = ПрочитатьПараметрыЗапуска(ПараметрыЗапускаСтрокой);
Параметры = ПрочитатьПараметрыЗапуска(ПараметрыЗапускаСтрокой, Обработчик);
Исключение
@ -54,55 +51,25 @@
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции для служебного использования внутри подсистемы
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс
Функция ЗначениеНастройкиТеста(ИмяНастройки, ОписаниеТеста, ОписаниеТестовогоНабора, ЗначениеПоУмолчанию) Экспорт
Значение = ЗначениеПоУмолчанию;
Если ОписаниеТеста.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТеста.НастройкиВыполнения[ИмяНастройки];
ИначеЕсли ОписаниеТестовогоНабора.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТестовогоНабора.НастройкиВыполнения[ИмяНастройки];
Иначе
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();
Если ГлобальныеНастройки.Свойство(ИмяНастройки) Тогда
Значение = ГлобальныеНастройки[ИмяНастройки];
КонецЕсли;
КонецЕсли;
Возврат Значение;
КонецФункции
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции, составляющие внутреннюю реализацию модуля
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции
// ПрочитатьПараметрыЗапуска
// Читает параметры из строки запуска
// Параметры:
// ПараметрыЗапускаСтрокой - Строка - Строка с параметрами запуска.
// Содержит ключ запуска и строку с конфигурационным файлом.
// Формат строки "RunUnitTests=/путь/к/конфигурационному/файлу", где ключ указывается обязательно, а путь - по желанию
// Содержит ключ запуска и строку с конфигурационным файлом.
// Формат строки "RunUnitTests=/путь/к/конфигурационному/файлу",
// где ключ указывается обязательно, а путь - по желанию
// Обработчик - ОписаниеОповещения
//
// Возвращаемое значение:
// см. ЮТФабрика.ПараметрыЗапуска
Функция ПрочитатьПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой)
Функция ПрочитатьПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой, Обработчик)
Параметры = ЮТФабрика.ПараметрыЗапуска();
Если Не ЗначениеЗаполнено(ПараметрыЗапускаСтрокой) Тогда
ЮТИсполнительКлиент.ВызватьОбработчик(Обработчик, Параметры);
Возврат Параметры;
КонецЕсли;
@ -139,11 +106,12 @@
Если ЗначениеЗаполнено(КонфигурационныйФайл) Тогда
ПараметрыИзФайла = ПрочитатьКонфигурационныйФайл(КонфигурационныйФайл);
ДополнитьПараметрыПрочитанными(Параметры, ПараметрыИзФайла);
КонецЕсли;
ЮТИсполнительКлиент.ВызватьОбработчик(Обработчик, Параметры);
Возврат Параметры;
КонецФункции

View File

@ -7,6 +7,5 @@
</synonym>
<comment>Используется для обработки и дополнения параметров запуска тестов</comment>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -271,7 +271,7 @@
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции;
Возврат ЮТПараметрыЗапуска.ЗначениеНастройкиТеста(ИмяПараметра, ОписаниеСобытия.Тест, ОписаниеСобытия.Набор, Ложь);
Возврат ЮТНастройкиВыполнения.ЗначениеНастройкиТеста(ИмяПараметра, ОписаниеСобытия.Тест, ОписаниеСобытия.Набор, Ложь);
КонецФункции

View File

@ -82,7 +82,14 @@
// СтатусыИсполненияТеста
// Возвращает перечисление возможных статусов выполнения теста, жизненный цикл теста
// Возвращаемое значение:
// ФиксированнаяСтруктура - Статусы исполнения теста
// ФиксированнаяСтруктура - Статусы исполнения теста:
// * Ожидание- Строка - Тест не выполнялся
// * Исполнение- Строка - Тест выполняется в данный момент
// * Успешно- Строка - Тест успешно пройден
// * Ошибка- Строка - Тест упал с ошибкой выполнения
// * Сломан- Строка - Тест упал на проверках утверждений
// * Пропущен- Строка - Тест пропущен по каким либо причинам
// * НеРеализован- Строка - Тест не реализован
Функция СтатусыИсполненияТеста() Экспорт
Статусы = Новый Структура();
@ -102,7 +109,7 @@
// Типы ошибок.
//
// Возвращаемое значение:
// ФиксированнаяСтруктура
// ФиксированнаяСтруктура - Типы возможных ошибок:
// * ТестНеРеализован - Строка
// * ОшибкаСравнения - Строка
// * ОшибкаОбработкиСобытия - Строка
@ -121,6 +128,7 @@
Типы.Вставить(ТипОшибки.Ключ, ТипОшибки.Ключ);
КонецЦикла;
//@skip-check constructor-function-return-section
Возврат Новый ФиксированнаяСтруктура(Типы);
КонецФункции
@ -131,20 +139,23 @@
ЮТПовторногоИспользования.ПараметрыТиповОшибок();
КонецЕсли;
Возврат ЮТТестовыеДанные.СтруктураMarkDown("Ключ",
"| Ключ | Представление | Статус |
||--------------------------------|----------------------------------|--------------|
|| ТестНеРеализован | Не реализован | НеРеализован |
|| ОшибкаСравнения | Ошибка сравнения | Ошибка |
|| ОшибкаОбработкиСобытия | Ошибка обработки события | Сломан |
|| Утверждений | Ошибка утверждений | Ошибка |
|| Исполнения | Ошибка исполнения | Сломан |
|| ЧтенияТестов | Загрузки тестов | Сломан |
|| МалоПараметров | Мало фактических параметров | Сломан |
|| МногоПараметров | Много фактических параметров | Сломан |
|| НекорректныйКонтекстИсполнения | Некорректный контекст исполнения | Пропущен |
|| Пропущен | Пропущен | Пропущен |
|");
Статусы = СтатусыИсполненияТеста();
Реквизиты = "Ключ, Представление, Статус";
ТипыОшибок = Новый Массив();
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ТестНеРеализован", "Не реализован", Статусы.НеРеализован));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ТестНеРеализован", "Не реализован", Статусы.НеРеализован));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаСравнения", "Ошибка сравнения", Статусы.Ошибка));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ОшибкаОбработкиСобытия", "Ошибка обработки события", Статусы.Сломан));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Утверждений", "Ошибка утверждений", Статусы.Ошибка));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Исполнения", "Ошибка исполнения", Статусы.Сломан));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "ЧтенияТестов", "Загрузки тестов", Статусы.Сломан));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МалоПараметров", "Мало фактических параметров", Статусы.Сломан));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "МногоПараметров", "Много фактических параметров", Статусы.Сломан));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "НекорректныйКонтекстИсполнения", "Некорректный контекст исполнения", Статусы.Пропущен));
ТипыОшибок.Добавить(Новый Структура(Реквизиты, "Пропущен", "Пропущен", Статусы.Пропущен));
Возврат ЮТКоллекции.ВСтруктуру(ТипыОшибок, "Ключ");
КонецФункции
@ -494,6 +505,24 @@
#КонецОбласти
#Область КонструкторыКонтекстов
// Данные контекста исполнения.
//
// Возвращаемое значение:
// Структура - Данные контекста исполнения:
// * Уровень - Строка
Функция НовыйКонтекстИсполнения() Экспорт
Контекст = Новый Структура();
Контекст.Вставить("Уровень", "");
Возврат Контекст;
КонецФункции
#КонецОбласти
// КонтекстыМодуля
// Возвращает коллекцию доступных контекстов выполнения модуля
// Параметры:

View File

@ -0,0 +1,25 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2023 BIA-Technologies Limited Liability Company
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
//©///////////////////////////////////////////////////////////////////////////©//
#Область СлужебныйПрограммныйИнтерфейс
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="2874e686-3785-4050-994a-bf457fa32700">
<name>ЮТФайлы</name>
<synonym>
<key>ru</key>
<value>Файлы</value>
</synonym>
<server>true</server>
</mdclass:CommonModule>

View File

@ -40,7 +40,9 @@
<commonModules>CommonModule.МокитоСлужебный</commonModules>
<commonModules>CommonModule.ЮТест</commonModules>
<commonModules>CommonModule.ЮТИсполнитель</commonModules>
<commonModules>CommonModule.ЮТИсполнительКлиент</commonModules>
<commonModules>CommonModule.ЮТИсполнительСервер</commonModules>
<commonModules>CommonModule.ЮТКоллекции</commonModules>
<commonModules>CommonModule.ЮТКонструкторВариантов</commonModules>
<commonModules>CommonModule.ЮТКонструкторТестовыхДанных</commonModules>
<commonModules>CommonModule.ЮТКонтекст</commonModules>
@ -52,6 +54,7 @@
<commonModules>CommonModule.ЮТМетаданные</commonModules>
<commonModules>CommonModule.ЮТМетаданныеПовтИсп</commonModules>
<commonModules>CommonModule.ЮТМетаданныеСервер</commonModules>
<commonModules>CommonModule.ЮТНастройкиВыполнения</commonModules>
<commonModules>CommonModule.ЮТОбщий</commonModules>
<commonModules>CommonModule.ЮТОбщийВызовСервера</commonModules>
<commonModules>CommonModule.ЮТОтчет</commonModules>
@ -68,6 +71,7 @@
<commonModules>CommonModule.ЮТТесты</commonModules>
<commonModules>CommonModule.ЮТУтверждения</commonModules>
<commonModules>CommonModule.ЮТФабрика</commonModules>
<commonModules>CommonModule.ЮТФайлы</commonModules>
<commonModules>CommonModule.ЮТФильтрация</commonModules>
<commonModules>CommonModule.ЮТЧитатель</commonModules>
<commonModules>CommonModule.ЮТЧитательСервер</commonModules>

View File

@ -35,7 +35,7 @@
&После("ПриНачалеРаботыСистемы")
Процедура ЮТПриНачалеРаботыСистемы()
ЮТИсполнитель.ВыполнитьМодульноеТестирование();
ЮТИсполнительКлиент.ВыполнитьМодульноеТестирование();
КонецПроцедуры

View File

@ -117,7 +117,7 @@
.Элемент(1).ИмеетТип("Структура")
.Элемент(2).ИмеетТип("Структура")
;
НаборПоУмолчанию = Сценарии[0];
НаборЭтоТестовыйМодуль = Сценарии[1];
НаборЗагрузкаТестов = Сценарии[2];