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

#ONECICD-546

This commit is contained in:
Корякин Алексей Викторович (000106721) 2022-09-29 17:09:40 +03:00 committed by Максимов Валерий Валерьевич (000044217)
parent e3e450c19e
commit 964399640c
32 changed files with 1248 additions and 641 deletions

View File

@ -20,37 +20,40 @@
// Экспортные процедуры и функции, предназначенные для использования другими // Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами // объектами конфигурации или другими программами
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ТестыAPI #Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты ЮТТесты
.Тест("ТестовыйМетод") .ДобавитьТест("ТестовыйМетод")
.ДобавитьТест("ТестовыйМетод").СПараметрами(1, 2, 3);
; ;
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область События #Область События
Процедура ПередТестом() Экспорт Процедура ПередВсемиТестами() Экспорт
НачатьТранзакцию();
КонецПроцедуры КонецПроцедуры
Процедура ПослеТеста() Экспорт Процедура ПередКаждымТестом() Экспорт
Пока ТранзакцияАктивна() Цикл КонецПроцедуры
ОтменитьТранзакцию();
КонецЦикла; Процедура ПослеКаждогоТеста() Экспорт
КонецПроцедуры
Процедура ПослеВсехТестов() Экспорт
КонецПроцедуры КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область Тесты Процедура ТестовыйМетод() Экспорт
КонецПроцедуры
#КонецОбласти #КонецОбласти

View File

@ -157,7 +157,7 @@
Параметр9 = "_!%*", Параметр9 = "_!%*",
Параметр10 = "_!%*") Экспорт Параметр10 = "_!%*") Экспорт
Возврат МокитоСлужебный.МассивПараметров(Параметр1, Возврат ЮТОбщий.ЗначениеВМассиве(Параметр1,
Параметр2, Параметр2,
Параметр3, Параметр3,
Параметр4, Параметр4,

View File

@ -228,6 +228,16 @@
Если ПараметрыПерехватаОбъекта = Неопределено И ЭтоОбъект(Ключ) Тогда Если ПараметрыПерехватаОбъекта = Неопределено И ЭтоОбъект(Ключ) Тогда
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка]; ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Ключ.Ссылка];
Если ПараметрыПерехватаОбъекта = Неопределено Тогда
ПолноеИмя = СтрРазделить(Ключ.Метаданные().ПолноеИмя(), ".");
Менеджер = Новый(СтрШаблон("%1Менеджер.%2", ПолноеИмя[0], ПолноеИмя[1]));
ПараметрыПерехватаОбъекта = ПараметрыПерехвата[Менеджер];
КонецЕсли;
КонецЕсли; КонецЕсли;
Возврат ПараметрыПерехватаОбъекта; Возврат ПараметрыПерехватаОбъекта;
@ -271,13 +281,13 @@
#Область ОбработчикиСобытий #Область ОбработчикиСобытий
Процедура ПередТестом(ОписаниеСобытия) Экспорт Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт
ИнициализироватьНастройки(); ИнициализироватьНастройки();
КонецПроцедуры КонецПроцедуры
Процедура ПослеТеста(ОписаниеСобытия) Экспорт Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
ОчиститьНастройки(); ОчиститьНастройки();
@ -285,85 +295,6 @@
#КонецОбласти #КонецОбласти
Функция МассивПараметров(Параметр1 = "_!%*",
Параметр2 = "_!%*",
Параметр3 = "_!%*",
Параметр4 = "_!%*",
Параметр5 = "_!%*",
Параметр6 = "_!%*",
Параметр7 = "_!%*",
Параметр8 = "_!%*",
Параметр9 = "_!%*",
Параметр10 = "_!%*") Экспорт
ФлагКонец = "_!%*";
Параметры = Новый Массив;
Если Параметр1 <> ФлагКонец Тогда
Параметры.Добавить(Параметр1);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр2 <> ФлагКонец Тогда
Параметры.Добавить(Параметр2);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр3 <> ФлагКонец Тогда
Параметры.Добавить(Параметр3);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр4 <> ФлагКонец Тогда
Параметры.Добавить(Параметр4);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр5 <> ФлагКонец Тогда
Параметры.Добавить(Параметр5);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр6 <> ФлагКонец Тогда
Параметры.Добавить(Параметр6);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр7 <> ФлагКонец Тогда
Параметры.Добавить(Параметр7);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр8 <> ФлагКонец Тогда
Параметры.Добавить(Параметр8);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр9 <> ФлагКонец Тогда
Параметры.Добавить(Параметр9);
Иначе
Возврат Параметры;
КонецЕсли;
Если Параметр10 <> ФлагКонец Тогда
Параметры.Добавить(Параметр10);
Иначе
Возврат Параметры;
КонецЕсли;
Возврат Параметры;
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////

View File

@ -18,30 +18,23 @@
// @strict-types // @strict-types
///////////////////////////////////////////////////////////////////////////////// #Область СлужебныйПрограммныйИнтерфейс
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область ТестыAPI
Процедура ИсполняемыеСценарии() Экспорт Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты ЮТТесты
.Тест("Обучение") .ДобавитьТест("Обучение")
.Тест("Проверить") .ДобавитьТест("Проверить")
.Тест("МокированиеМетодовСсылочныхОбъектов") .ДобавитьТест("МокированиеМетодовСсылочныхОбъектов")
.Тест("НастройкаСерверныхМоковСКлиента") .ДобавитьТест("НастройкаСерверныхМоковСКлиента")
; ;
КонецПроцедуры КонецПроцедуры
#КонецОбласти
#Область Тесты
Процедура Обучение() Экспорт Процедура Обучение() Экспорт
Описание = "Обучение через явный вызов метода"; Описание = "Обучение через явный вызов метода";
Мокито.Обучение(РаботаСHTTP) Мокито.Обучение(РаботаСHTTP)
.Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ЛюбойПараметр(), Мокито.ЛюбойПараметр())) .Когда(РаботаСHTTP.ОтправитьОбъектНаСервер(Мокито.ЛюбойПараметр(), Мокито.ЛюбойПараметр()))
.Вернуть(1) .Вернуть(1)

View File

@ -20,20 +20,23 @@
// Экспортные процедуры и функции, предназначенные для использования другими // Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами // объектами конфигурации или другими программами
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ТестыAPI #Область СлужебныйПрограммныйИнтерфейс
Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт
ЮТТесты ЮТТесты
.Тест("ПропуститьИсполнение")
.ТестКлиент("ВыполнитьМодульноеТестирование") .ТестКлиент("ВыполнитьМодульноеТестирование")
.Тест("ВыполнитьГруппуНаборовТестов") .Тест("ВыполнитьГруппуНаборовТестов")
; ;
КонецПроцедуры КонецПроцедуры
#КонецОбласти Процедура ПропуститьИсполнение() Экспорт
#Область Тесты ЮТест.Пропустить();
КонецПроцедуры
#КонецОбласти #КонецОбласти

View File

@ -25,37 +25,38 @@
Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт
ЮТТесты ЮТТесты
.Тест("Что") .ДобавитьТест("Что")
.Тест("Метод") .ДобавитьТест("Метод")
.Тест("Свойство") .ДобавитьТест("Свойство")
.Тест("ЭтоИстина") .ДобавитьТест("НетСвойства")
.Тест("ЭтоНеИстина") .ДобавитьТест("ЭтоИстина")
.Тест("ЭтоЛожь") .ДобавитьТест("ЭтоНеИстина")
.Тест("ЭтоНеЛожь") .ДобавитьТест("ЭтоЛожь")
.Тест("Равно") .ДобавитьТест("ЭтоНеЛожь")
.Тест("НеРавно") .ДобавитьТест("Равно")
.Тест("Больше") .ДобавитьТест("НеРавно")
.Тест("БольшеИлиРавно") .ДобавитьТест("Больше")
.Тест("Меньше") .ДобавитьТест("БольшеИлиРавно")
.Тест("МеньшеИлиРавно") .ДобавитьТест("Меньше")
.Тест("Заполнено") .ДобавитьТест("МеньшеИлиРавно")
.Тест("НеЗаполнено") .ДобавитьТест("Заполнено")
.Тест("Существует") .ДобавитьТест("НеЗаполнено")
.Тест("НеСуществует") .ДобавитьТест("Существует")
.Тест("ЭтоНеопределено") .ДобавитьТест("НеСуществует")
.Тест("ЭтоНеНеопределено") .ДобавитьТест("ЭтоНеопределено")
.Тест("ЭтоNull") .ДобавитьТест("ЭтоНеНеопределено")
.Тест("ЭтоНеNull") .ДобавитьТест("ЭтоNull")
.Тест("ИмеетТип") .ДобавитьТест("ЭтоНеNull")
.Тест("НеИмеетТип") .ДобавитьТест("ИмеетТип")
.Тест("Содержит") .ДобавитьТест("НеИмеетТип")
.Тест("НеСодержит") .ДобавитьТест("Содержит")
.Тест("ИмеетДлину") .ДобавитьТест("НеСодержит")
.Тест("НеИмеетДлину") .ДобавитьТест("ИмеетДлину")
.Тест("ВыбрасываетИсключение") .ДобавитьТест("НеИмеетДлину")
.Тест("НеВыбрасываетИсключение") .ДобавитьТест("ВыбрасываетИсключение")
.ТестСервер("СравнениеСложныхОбъектов") .ДобавитьТест("НеВыбрасываетИсключение")
.Тест("ФормированиеСообщения") .ДобавитьСерверныйТест("СравнениеСложныхОбъектов")
.ДобавитьТест("ФормированиеСообщения")
; ;
КонецПроцедуры КонецПроцедуры
@ -86,7 +87,7 @@
ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки(); ДанныеКонтекста = ЮТКонтекст.КонтекстПроверки();
ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено") ЮТУтверждения.Что(ДанныеКонтекста, "Свойство не установлено")
.Свойство("ИмяСвойства").Равно(""); .Свойство("ИмяСвойства").Равно(Неопределено);
ЮТУтверждения.Что(Объект) ЮТУтверждения.Что(Объект)
.Свойство("Примитив"); .Свойство("Примитив");
@ -139,7 +140,7 @@
Исключение Исключение
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуИсполнения(Ошибка, "Задано неправильное имя атрибута структуры"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Структура` содержит свойство `1+1`, но это не так.");
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -148,7 +149,9 @@
Исключение Исключение
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуИсполнения(Ошибка, "Невалидный составной идентификатор: Задано неправильное имя атрибута структуры");
ПроверитьОшибкуУтверждения(Ошибка,
"Невалидный составной идентификатор: ожидали, что проверяемое значение `Структура` содержит свойство `Объект.1`, но это не так.");
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -159,6 +162,48 @@
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Структура` содержит свойство `Объект.Нулевой`, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Структура` содержит свойство `Объект.Нулевой`, но это не так");
Объект = Мокито.МассивПараметров("1", "2", "3");
ЮТУтверждения.Что(Объект, "Проверка элементов массива")
.Элемент(0).Равно("1")
.Элемент(1).Равно("2")
.Элемент(-1).Равно("3")
.Свойство("[00]").Равно("1")
.Свойство("[1]").Равно("2")
.Свойство("[-1]").Равно("3")
.НетСвойства(3)
.НетСвойства("[3]");
Объект.Добавить(Новый Структура("Первый, Второй", 1, Мокито.МассивПараметров(2)));
ЮТУтверждения.Что(Объект, "Проверка свойства элемента массива")
.Свойство("[3].Первый").Равно(1)
.Свойство("[3].Второй[-1]").Равно(2)
.Свойство("[3].Второй[0]").Равно(2)
КонецПроцедуры
Процедура НетСвойства() Экспорт
ВложеннаяСтруктура = Новый Структура("Строка, Число", "Строка", 123);
ВложенноеСоответствие = Новый Соответствие();
ВложенноеСоответствие.Вставить("Строка", "Строка");
ВложенноеСоответствие.Вставить("Число", 234);
ВложенноеСоответствие.Вставить(123, 456);
Объект = Новый Структура("Структура, Соответствие", ВложеннаяСтруктура, ВложенноеСоответствие);
ЮТест.ОжидаетЧто(Объект)
.Свойство("Структура").Равно(ВложеннаяСтруктура)
.НетСвойства("Число")
.Равно(Объект);
Попытка
Ошибка = Неопределено;
ЮТест.ОжидаетЧто(Объект)
.НетСвойства("Соответствие")
Исключение
Ошибка = ИнформацияОбОшибке();
КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Структура` не содержит свойство `Соответствие`, но это не так.");
КонецПроцедуры КонецПроцедуры
Процедура Метод() Экспорт Процедура Метод() Экспорт
@ -739,7 +784,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` является заполненным, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` является заполненным, но это не так");
ПроверитьДанныеОшибкиУтверждения(Неопределено); ПроверитьДанныеОшибкиСравнения(Неопределено, Неопределено);
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -749,7 +794,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `0` является заполненным, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `0` является заполненным, но это не так");
ПроверитьДанныеОшибкиУтверждения(0); ПроверитьДанныеОшибкиСравнения(0, Неопределено);
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -802,7 +847,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Нет` не является заполненным, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `Нет` не является заполненным, но это не так");
ПроверитьДанныеОшибкиУтверждения(Ложь); ПроверитьДанныеОшибкиСравнения(Ложь, Неопределено);
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -843,7 +888,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` существует, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` существует, но это не так");
ПроверитьДанныеОшибкиУтверждения(Неопределено); ПроверитьДанныеОшибкиСравнения(Неопределено, Неопределено);
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -853,7 +898,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` существует, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что проверяемое значение `` существует, но это не так");
ПроверитьДанныеОшибкиУтверждения(Null); ПроверитьДанныеОшибкиСравнения(Null, Неопределено);
КонецПроцедуры КонецПроцедуры
@ -874,7 +919,7 @@
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Пустая строка: ожидали, что проверяемое значение `` не существует, но это не так"); ПроверитьОшибкуУтверждения(Ошибка, "Пустая строка: ожидали, что проверяемое значение `` не существует, но это не так");
ПроверитьДанныеОшибкиУтверждения(""); ПроверитьДанныеОшибкиСравнения("", Неопределено);
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;
@ -1416,7 +1461,8 @@
Исключение Исключение
Ошибка = ИнформацияОбОшибке(); Ошибка = ИнформацияОбОшибке();
КонецПопытки; КонецПопытки;
ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что метод `МетодБезИсключение` вызовет исключение `Исключение`, но получили `{(1)}: Недостаточно фактических параметров`"); ПроверитьОшибкуУтверждения(Ошибка, "Ожидали, что метод `МетодБезИсключение` вызовет исключение `Исключение`, но получили");
ПроверитьОшибкуУтверждения(Ошибка, "Недостаточно фактических параметров");
Попытка Попытка
Ошибка = Неопределено; Ошибка = Неопределено;

View File

@ -173,7 +173,7 @@
Наборы = Новый Массив(); Наборы = Новый Массив();
Набор = ЮТФабрика.ОписаниеТестовогоНабора("Тесты"); Набор = ЮТФабрика.ОписаниеТестовогоНабора("Тесты");
Тест = ЮТФабрика.ОписаниеТеста("Тест1", "Тест 1", Контексты.Сервер + ", " + Контексты.КлиентУправляемоеПриложение); Тест = ЮТФабрика.ОписаниеТеста("Тест1", "Тест 1", ЮТОбщий.ЗначениеВМассиве(Контексты.Сервер, Контексты.КлиентУправляемоеПриложение));
Набор.Тесты.Добавить(Тест); Набор.Тесты.Добавить(Тест);
Наборы.Добавить(Набор); Наборы.Добавить(Набор);

View File

@ -16,45 +16,44 @@
// //
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
///////////////////////////////////////////////////////////////////////////////// #Область СлужебныйПрограммныйИнтерфейс
// Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами
/////////////////////////////////////////////////////////////////////////////////
#Область ТестыAPI
Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт
ЮТТесты ЮТТесты
.Тест("ПрочитатьНаборыТестов")
.Тест("ИсполняемыеСценарииМодуля") .Тест("ИсполняемыеСценарииМодуля")
.Тест("ЭтоТестовыйМодуль") .ДобавитьТестовыйНабор("ЭтоТестовыйМодуль", "Параметризированный, 1,2")
.Тест("ЭтоТестовыйМодуль").СПараметрами("ОМ_ЮТЧитатель", Истина)
.Тест("ЭтоТестовыйМодуль").СПараметрами("ОМ_ЮТУтверждения", Истина)
.Тест("ЭтоТестовыйМодуль").СПараметрами("ОМ_Мокито", Истина)
.Тест("ЭтоТестовыйМодуль").СПараметрами("ЮТЧитатель", Ложь)
.ДобавитьТестовыйНабор("ЗагрузкаТестов")
.ТестКлиент("ЗагрузитьТесты")
.ТестСервер("ЗагрузитьТесты")
;
КонецПроцедуры КонецПроцедуры
#КонецОбласти Процедура ЗагрузитьТесты() Экспорт
#Область Тесты
Процедура ПрочитатьНаборыТестов() Экспорт
ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска(); ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска();
ПараметрыЗапуска.filter.extensions = Неопределено; ПараметрыЗапуска.filter.extensions = Неопределено;
ПараметрыЗапуска.filter.modules = ЮТОбщий.ЗначениеВМассиве("ОМ_ЮТЧитатель"); ПараметрыЗапуска.filter.modules = ЮТОбщий.ЗначениеВМассиве("ОМ_ЮТЧитатель");
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТУтверждения.Что(Наборы, "Прочитанные наборы") ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы")
.ИмеетТип("Массив") .ИмеетТип("Массив")
.ИмеетДлину(1); .ИмеетДлину(1);
НаборМодуля = Наборы[0]; НаборМодуля = Наборы[0];
ЮТУтверждения.Что(НаборМодуля, "Набор тестов ОМ_ЮТЧитатель") ЮТест.ОжидаетЧто(НаборМодуля, "Набор тестов ОМ_ЮТЧитатель")
.ИмеетТип("Структура") .ИмеетТип("Структура")
.Свойство("МетаданныеМодуля").ИмеетТип("Структура") .Свойство("МетаданныеМодуля").ИмеетТип("Структура")
.Свойство("НаборыТестов").ИмеетТип("Массив"); .Свойство("НаборыТестов").ИмеетТип("Массив");
МетаданныеМодуля = НаборМодуля.МетаданныеМодуля; МетаданныеМодуля = НаборМодуля.МетаданныеМодуля;
ЮТУтверждения.Что(МетаданныеМодуля, "Метаданные модуля") ЮТест.ОжидаетЧто(МетаданныеМодуля, "Метаданные модуля")
.Заполнено() .Заполнено()
.ИмеетТип("Структура") .ИмеетТип("Структура")
.Свойство("Имя").Равно("ОМ_ЮТЧитатель") .Свойство("Имя").Равно("ОМ_ЮТЧитатель")
@ -66,27 +65,26 @@
НаборыТестов = НаборМодуля.НаборыТестов; НаборыТестов = НаборМодуля.НаборыТестов;
ЮТУтверждения.Что(НаборыТестов, "Наборы тестов модуля") ЮТест.ОжидаетЧто(НаборыТестов, "Наборы тестов модуля")
.ИмеетТип("Массив") .ИмеетТип("Массив")
.ИмеетДлину(1); .ИмеетДлину(3);
ЮТУтверждения.Что(НаборыТестов[0], "Набор тестов модуля") ЮТест.ОжидаетЧто(НаборыТестов[0], "Набор тестов по умолчанию")
.ИмеетТип("Структура") .ИмеетТип("Структура")
.Свойство("Имя").Равно("Тесты") .Свойство("Имя").Равно("ОМ_ЮТЧитатель")
.Свойство("Ошибки").ИмеетДлину(0)
.Свойство("Представление").Равно("ОМ_ЮТЧитатель") .Свойство("Представление").Равно("ОМ_ЮТЧитатель")
.Свойство("Теги").ИмеетТип("Массив") .Свойство("Ошибки").ИмеетТип("Массив").НеЗаполнено()
.Свойство("Теги").ИмеетДлину(0) .Свойство("Теги").ИмеетТип("Массив").НеЗаполнено()
.Свойство("Тесты").ИмеетТип("Массив"); .Свойство("Тесты").ИмеетТип("Массив").ИмеетДлину(1);
Тесты = НаборыТестов[0].Тесты; Тесты = НаборыТестов[0].Тесты;
ЮТУтверждения.Что(Тесты.Количество(), "Количество тестов модуля") ЮТест.ОжидаетЧто(Тесты.Количество(), "Количество тестов модуля")
.БольшеИлиРавно(1); .БольшеИлиРавно(1);
ЮТУтверждения.Что(Тесты[0], "Первый тест") ЮТест.ОжидаетЧто(Тесты[0], "Первый тест")
.Свойство("Имя").Равно("ПрочитатьНаборыТестов") .Свойство("Имя").Равно("ИсполняемыеСценарииМодуля")
.Свойство("Представление").Равно("ПрочитатьНаборыТестов") .Свойство("Представление").НеЗаполнено()
.Свойство("Теги").Равно(Новый Массив()) .Свойство("Теги").Равно(Новый Массив())
.Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение")); .Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение"));
@ -94,7 +92,7 @@
ПараметрыЗапуска.filter.extensions = ЮТОбщий.ЗначениеВМассиве("tests"); ПараметрыЗапуска.filter.extensions = ЮТОбщий.ЗначениеВМассиве("tests");
Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска); Наборы = ЮТЧитатель.ЗагрузитьТесты(ПараметрыЗапуска);
ЮТУтверждения.Что(Наборы, "Прочитанные наборы расширения tests") ЮТест.ОжидаетЧто(Наборы, "Прочитанные наборы расширения tests")
.ИмеетДлину(2); .ИмеетДлину(2);
КонецПроцедуры КонецПроцедуры
@ -102,7 +100,7 @@
Процедура ИсполняемыеСценарииМодуля() Экспорт Процедура ИсполняемыеСценарииМодуля() Экспорт
МетаданныеМодуля = Новый Структура; МетаданныеМодуля = Новый Структура;
МетаданныеМодуля.Вставить("Имя", "ОМ_СтроковыеФункцииКлиентСервер"); МетаданныеМодуля.Вставить("Имя", "ОМ_ЮТЧитатель");
МетаданныеМодуля.Вставить("КлиентУправляемоеПриложение", Истина); МетаданныеМодуля.Вставить("КлиентУправляемоеПриложение", Истина);
МетаданныеМодуля.Вставить("КлиентОбычноеПриложение", Истина); МетаданныеМодуля.Вставить("КлиентОбычноеПриложение", Истина);
МетаданныеМодуля.Вставить("Клиент", Ложь); МетаданныеМодуля.Вставить("Клиент", Ложь);
@ -112,74 +110,51 @@
ЮТФильтрация.УстановитьКонтекст(Новый Структура("filter", Новый Структура)); ЮТФильтрация.УстановитьКонтекст(Новый Структура("filter", Новый Структура));
Сценарии = ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля); Сценарии = ЮТЧитатель.ИсполняемыеСценарииМодуля(МетаданныеМодуля);
ЮТУтверждения.Что(Сценарии, "Сценарии") ЮТест.ОжидаетЧто(Сценарии, "Сценарии")
.ИмеетТип("Массив") .ИмеетТип("Массив")
.ИмеетДлину(3); .ИмеетДлину(3)
.Элемент(0).ИмеетТип("Структура")
.Элемент(1).ИмеетТип("Структура")
.Элемент(2).ИмеетТип("Структура")
;
Наборы = ЮТОбщий.КоллекцияВСоответствие(Сценарии, "Имя"); НаборПоУмолчанию = Сценарии[0];
НаборЭтоТестовыйМодуль = Сценарии[1];
НаборЗагрузкаТестов = Сценарии[2];
ЮТУтверждения.Что(Наборы, "Наборы тестов") ЮТест.ОжидаетЧто(НаборПоУмолчанию, "Набор по умолчанию")
.Свойство("Тесты").ИмеетТип("Структура") .Свойство("Имя").Равно("ОМ_ЮТЧитатель")
.Свойство("ТестовыйНабор").ИмеетТип("Структура") .Свойство("Представление").Равно("ОМ_ЮТЧитатель")
.Свойство("Тестовый набор 2").ИмеетТип("Структура")
.ИмеетДлину(3);
Набор1 = Наборы["Тесты"];
Набор2 = Наборы["ТестовыйНабор"];
Набор3 = Наборы["Тестовый набор 2"];
ЮТУтверждения.Что(Набор1, "Набор по умолчанию")
.Свойство("Имя").Равно("Тесты")
.Свойство("Представление").Равно("ОМ_СтроковыеФункцииКлиентСервер")
.Свойство("Теги").ИмеетДлину(0) .Свойство("Теги").ИмеетДлину(0)
.Свойство("Тесты").ИмеетДлину(3); .Свойство("Тесты").ИмеетДлину(1)
.Свойство("Тесты[0].Имя").Равно("ИсполняемыеСценарииМодуля")
.Свойство("Тесты[0].Представление").НеЗаполнено()
.Свойство("Тесты[0].Теги").ИмеетДлину(0)
.Свойство("Тесты[0].КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("Сервер", "КлиентУправляемоеПриложение"))
;
ЮТУтверждения.Что(Набор2, "Набор ""ТестовыйНабор""") ЮТест.ОжидаетЧто(НаборЗагрузкаТестов, "Набор 'ЗагрузкаТестов'")
.Свойство("Имя").Равно("ТестовыйНабор") .Свойство("Имя").Равно("ЗагрузкаТестов")
.Свойство("Представление").Равно("ТестовыйНабор") .Свойство("Тесты").ИмеетДлину(2)
.Свойство("Теги").ИмеетДлину(0) .Свойство("Тесты[0].Имя").Равно("ЗагрузитьТесты")
.Свойство("Тесты").ИмеетДлину(3); .Свойство("Тесты[0].КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение"))
.Свойство("Тесты[1].Имя").Равно("ЗагрузитьТесты")
.Свойство("Тесты[1].КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("Сервер"))
;
ЮТУтверждения.Что(Набор3, "Набор ""Тестовый набор 2""") ЮТест.ОжидаетЧто(НаборЭтоТестовыйМодуль, "Набор 'ЭтоТестовыйМодуль'")
.Свойство("Имя").Равно("Тестовый набор 2") .Свойство("Имя").Равно("ЭтоТестовыйМодуль")
.Свойство("Теги").ИмеетДлину(2) .Свойство("Тесты").ИмеетДлину(4)
.Свойство("Тесты").ИмеетДлину(1); .Свойство("Теги").ИмеетДлину(3)
;
ТестыПоУмолчанию = Набор1.Тесты;
ЮТУтверждения.Что(ТестыПоУмолчанию[0], "Первый тест набора по умолчанию")
.ИмеетТип("Структура")
.Свойство("Имя").Равно("ТестовыйМетод3")
.Свойство("Представление").Равно("Тестовый метод 3")
.Свойство("Теги").ИмеетДлину(0)
.Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("Сервер", "КлиентУправляемоеПриложение"));
ЮТУтверждения.Что(ТестыПоУмолчанию[1], "Второй тест набора по умолчанию")
.Свойство("Имя").Равно("ТестовыйМетод4")
.Свойство("Представление").Равно("ТестовыйМетод4")
.Свойство("Теги").ИмеетДлину(0)
.Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("КлиентУправляемоеПриложение"));
ЮТУтверждения.Что(ТестыПоУмолчанию[2], "Третий тест набора по умолчанию")
.Свойство("Имя").Равно("ТестовыйМетод4")
.Свойство("КонтекстВызова").Равно(ЮТОбщий.ЗначениеВМассиве("Сервер"))
КонецПроцедуры КонецПроцедуры
Процедура ЭтоТестовыйМодуль() Экспорт Процедура ЭтоТестовыйМодуль(ИмяМодуля, ЭтоТестовый) Экспорт
Варианты = Новый Структура(); ОписаниеМодуля = ЮТМетаданныеСервер.МетаданныеМодуля(ИмяМодуля);
Варианты.Вставить("ОМ_ЮТЧитатель", Истина); ЮТест.ОжидаетЧто(ЮТЧитатель.ЭтоТестовыйМодуль(ОписаниеМодуля), "Проверка модуля " + ИмяМодуля)
Варианты.Вставить("ОМ_СтроковыеФункцииКлиентСервер", Истина); .Равно(ЭтоТестовый);
Варианты.Вставить("ОМ_ОшибкаЗагрузкиСценариев", Истина);
Варианты.Вставить("ЮТЧитатель", Ложь);
Для Каждого Вариант Из Варианты Цикл
ОписаниеМодуля = ЮТМетаданныеСервер.МетаданныеМодуля(Вариант.Ключ);
ЮТУтверждения.Что(ЮТЧитатель.ЭтоТестовыйМодуль(ОписаниеМодуля), "Проверка модуля " + Вариант.Ключ)
.Равно(Вариант.Значение);
КонецЦикла;
КонецПроцедуры КонецПроцедуры

View File

@ -16,40 +16,31 @@
// //
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
// @strict-types
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции, предназначенные для использования другими // Экспортные процедуры и функции, предназначенные для использования другими
// объектами конфигурации или другими программами // объектами конфигурации или другими программами
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
#КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции для служебного использования внутри подсистемы
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Функция ПрочитатьКонфигурационныйФайл(Знач ТекстИзФайла = "") Экспорт Процедура ИсполняемыеСценарии(ДополнительныеПараметры = Неопределено) Экспорт
Попытка ЮТТесты
.Тест("Пропустить")
;
Возврат ЮТОбщий.ЗначениеИзJSON(ТекстИзФайла); КонецПроцедуры
Исключение Процедура Пропустить() Экспорт
ВызватьИсключение СтрШаблон("Ошибка чтения конфигурационного файла: '%1'", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())); ЮТест.Пропустить();
ВызватьИсключение "Не отработал пропуск теста";
КонецПопытки; КонецПроцедуры
КонецФункции
#КонецОбласти #КонецОбласти
/////////////////////////////////////////////////////////////////////////////////
// Процедуры и функции, составляющие внутреннюю реализацию модуля
/////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
#КонецОбласти #КонецОбласти

View File

@ -1,11 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="ae3fc89b-811b-4cd7-8403-bf334dfbed19"> <mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="99f3e7cb-2833-48ec-b998-6c497d633d15">
<name>ЮТПараметрыСервер</name> <name>ОМ_ЮТест</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>Параметры сервер</value> <value>О м ест</value>
</synonym> </synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server> <server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication> <clientOrdinaryApplication>true</clientOrdinaryApplication>
<serverCall>true</serverCall>
</mdclass:CommonModule> </mdclass:CommonModule>

View File

@ -1,79 +0,0 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2022 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.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Основной модуль для запуска тестирования
/////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Инициализировать
// Выполняет чтение и инициализацию параметров подсистемы тестирования
// Параметры:
// ПараметрыЗапускаСтрокой - Строка - Строка запуска приложения
//
// Возвращаемое значение:
// Структура - См. ЮТФабрика.ПараметрыЗапуска
Функция Инициализировать(Знач ПараметрыЗапускаСтрокой) Экспорт
Возврат ЮТПараметры.ПараметрыЗапуска(ПараметрыЗапускаСтрокой);
КонецФункции
// ВыполнятьМодульноеТестирование
// Возвращает признак необходимости выполнять модульное тестирование
// Параметры:
// Параметры - См. ЮТФабрика.ПараметрыЗапуска
//
// Возвращаемое значение:
// Булево - Необходимость выполнения модульного тестирования
Функция ВыполнятьМодульноеТестирование(Параметры) Экспорт
Возврат Параметры.ВыполнятьМодульноеТестирование;
КонецФункции
// ВыполнитьМодульноеТестирование
// Запускает выполнение модульного тестирования
//
// Параметры:
// Параметры - См. ЮТФабрика.ПараметрыЗапуска
Процедура ВыполнитьМодульноеТестирование(Параметры = Неопределено) Экспорт
Если Параметры = Неопределено Тогда
Параметры = ЮТ.Инициализировать(ПараметрЗапуска);
КонецЕсли;
Если НЕ ВыполнятьМодульноеТестирование(Параметры) Тогда
Возврат;
КонецЕсли;
ЮТКонтекст.ИнициализироватьКонтекст();
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
РезультатыТестирования = ЮТИсполнитель.ВыполнитьМодульноеТестирование(ТестовыеМодули);
ЮТОтчет.СформироватьОтчет(РезультатыТестирования, Параметры);
Если Параметры.CloseAfterTests Тогда
ПрекратитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
#КонецОбласти

View File

@ -22,15 +22,31 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
#Если Клиент Тогда
// ВыполнитьМодульноеТестирование // ВыполнитьМодульноеТестирование
// Метод, по параметрам запуска, запускает выполнение всего процесса тестирования. // Метод, по параметрам запуска, запускает выполнение всего процесса тестирования.
// //
// Параметры: // Параметры:
// ТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеТестовогоМодуля // Параметры - См. ЮТФабрика.ПараметрыЗапуска
// Процедура ВыполнитьМодульноеТестирование(Параметры = Неопределено) Экспорт
// Возвращаемое значение:
// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов Если Параметры = Неопределено Тогда
Функция ВыполнитьМодульноеТестирование(ТестовыеМодули) Экспорт Параметры = ЮТПараметры.ПараметрыЗапуска(ПараметрЗапуска);
КонецЕсли;
Если НЕ Параметры.ВыполнятьМодульноеТестирование Тогда
Возврат;
КонецЕсли;
ЮТКонтекст.ИнициализироватьКонтекст();
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
ЮТСобытия.Инициализация(Параметры);
// Повторно сохраним для передачи на сервер
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
ЮТКонтекст.УстановитьКонтекстИсполнения(ДанныеКонтекстаИсполнения());
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
РезультатыТестирования = Новый Массив(); РезультатыТестирования = Новый Массив();
@ -48,9 +64,15 @@
КонецЦикла; КонецЦикла;
Возврат РезультатыТестирования; ЮТОтчет.СформироватьОтчет(РезультатыТестирования, Параметры);
КонецФункции Если Параметры.CloseAfterTests Тогда
ПрекратитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
#КонецЕсли
#КонецОбласти #КонецОбласти
@ -73,6 +95,9 @@
Возврат Наборы; Возврат Наборы;
КонецЕсли; КонецЕсли;
Уровни = ЮТФабрика.УровниИсполнения();
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Модуль;
ЮТСобытия.ПередВсемиТестамиМодуля(ТестовыйМодуль); ЮТСобытия.ПередВсемиТестамиМодуля(ТестовыйМодуль);
Если ЕстьОшибки(ТестовыйМодуль) Тогда Если ЕстьОшибки(ТестовыйМодуль) Тогда
@ -90,6 +115,8 @@
КонецЦикла; КонецЦикла;
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Модуль;
ЮТСобытия.ПослеВсехТестовМодуля(ТестовыйМодуль); ЮТСобытия.ПослеВсехТестовМодуля(ТестовыйМодуль);
Если ЕстьОшибки(ТестовыйМодуль) Тогда Если ЕстьОшибки(ТестовыйМодуль) Тогда
@ -110,6 +137,9 @@
Функция ВыполнитьНаборТестов(Набор, ТестовыйМодуль) Функция ВыполнитьНаборТестов(Набор, ТестовыйМодуль)
Уровни = ЮТФабрика.УровниИсполнения();
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.НаборТестов;
Набор.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); Набор.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
ЮТСобытия.ПередТестовымНабором(ТестовыйМодуль, Набор); ЮТСобытия.ПередТестовымНабором(ТестовыйМодуль, Набор);
@ -118,14 +148,15 @@
КонецЕсли; КонецЕсли;
Результаты = Новый Массив(); Результаты = Новый Массив();
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.Тест;
Для Каждого Тест Из Набор.Тесты Цикл Для Каждого Тест Из Набор.Тесты Цикл
Тест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах(); Тест.ДатаСтарта = ТекущаяУниверсальнаяДатаВМиллисекундах();
ЮТСобытия.ПередТестом(ТестовыйМодуль, Набор, Тест); ЮТСобытия.ПередКаждымТестом(ТестовыйМодуль, Набор, Тест);
ВыполнитьТестовыйМетод(Тест); ВыполнитьТестовыйМетод(Тест);
ЮТСобытия.ПослеТеста(ТестовыйМодуль, Набор, Тест); ЮТСобытия.ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест);
ОбработатьЗавершениеТеста(Тест); ОбработатьЗавершениеТеста(Тест);
@ -133,7 +164,9 @@
КонецЦикла; КонецЦикла;
ЮТКонтекст.КонтекстИсполнения().Уровень = Уровни.НаборТестов;
ЮТСобытия.ПослеТестовогоНабора(ТестовыйМодуль, Набор); ЮТСобытия.ПослеТестовогоНабора(ТестовыйМодуль, Набор);
Набор.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Набор.ДатаСтарта; Набор.Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - Набор.ДатаСтарта;
Возврат Результаты; Возврат Результаты;
@ -197,6 +230,7 @@
КатегорииНаборов.Вставить("Пропущенные", Новый Массив()); КатегорииНаборов.Вставить("Пропущенные", Новый Массив());
КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения(); КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения();
КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля);
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения(); КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
Для Каждого Набор Из ИсполняемыеТестовыеНаборы Цикл Для Каждого Набор Из ИсполняемыеТестовыеНаборы Цикл
@ -206,6 +240,8 @@
ОшибкаКонтекста = Неопределено; ОшибкаКонтекста = Неопределено;
Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Неподдерживаемый режим запуска"; ОшибкаКонтекста = "Неподдерживаемый режим запуска";
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения"; ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
КонецЕсли; КонецЕсли;
@ -252,7 +288,7 @@
СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста(); СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста();
Тест.Статус = СтатусыИсполненияТеста.Исполнение; Тест.Статус = СтатусыИсполненияТеста.Исполнение;
Ошибка = ЮТОбщий.ВыполнитьМетод(Тест.ПолноеИмяМетода); Ошибка = ЮТОбщий.ВыполнитьМетод(Тест.ПолноеИмяМетода, Тест.Параметры);
Если Ошибка <> Неопределено Тогда Если Ошибка <> Неопределено Тогда
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка); ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуВыполненияТеста(Тест, Ошибка);
@ -274,4 +310,18 @@
КонецПроцедуры КонецПроцедуры
// Данные контекста исполнения.
//
// Возвращаемое значение:
// Структура - Данные контекста исполнения:
// * Уровень - Строка
Функция ДанныеКонтекстаИсполнения()
Контекст = Новый Структура();
Контекст.Вставить("Уровень", "");
Возврат Контекст;
КонецФункции
#КонецОбласти #КонецОбласти

View File

@ -86,29 +86,56 @@
// КонтекстТеста // КонтекстТеста
// Возвращает структуру, в которой можно хранить данные используемые в тесте // Возвращает структуру, в которой можно хранить данные используемые в тесте
// Данные живут в рамках одного теста, но доступны в обработчиках событий `ПередТестом` и `ПослеТеста` // Данные живут в рамках одного теста, но доступны в обработчиках событий `ПередКаждымТестом` и `ПослеКаждогоТеста`
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеТеста` // Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`
// Возвращаемое значение: // Возвращаемое значение:
// Неопределено, Структура - Контекст теста, возвращает неопределено если контекст не инициализирован // Структура - Контекст теста
// Неопределено - Если метод вызывается за рамками теста
Функция КонтекстТеста() Экспорт Функция КонтекстТеста() Экспорт
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаТеста()); Возврат ЗначениеКонтекста(ИмяКонтекстаТеста());
КонецФункции КонецФункции
// КонтекстНабора // КонтекстНабора
// Возвращает структуру, в которой можно хранить данные используемые в тестах набора // Возвращает структуру, в которой можно хранить данные используемые в тестах набора
// Данные живут в рамках одного набора тестов (данные между клиентом и сервером не синхронизируются) // Данные живут в рамках одного набора тестов (данные между клиентом и сервером не синхронизируются)
// Доступны в каждом тесте набора и в обработчиках событий `ПередТестовымНабором`, `ПослеТестовогоНабора`, `ПередТестом` и `ПослеТеста` // Доступны в каждом тесте набора и в обработчиках событий
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеТеста` // + `ПередТестовымНабором`
// + `ПослеТестовогоНабора`
// + `ПередКаждымТестом`
// + `ПослеКаждогоТеста`
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`
// Возвращаемое значение: // Возвращаемое значение:
// Неопределено, Структура - Контекст набора тестов, возвращает неопределено если контекст не инициализирован // Структура - Контекст набора тестов
// Неопределено - Если метод вызывается за рамками тестового набора
Функция КонтекстНабора() Экспорт Функция КонтекстНабора() Экспорт
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаНабораТестов()); Возврат ЗначениеКонтекста(ИмяКонтекстаНабораТестов());
КонецФункции КонецФункции
// КонтекстМодуля
// Возвращает структуру, в которой можно хранить данные используемые в тестах модуля
// Данные живут в рамках одного тестового модуля (данные между клиентом и сервером не синхронизируются)
// Доступны в каждом тесте модуля и в обработчиках событий
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`
// Возвращаемое значение:
// Структура - Контекст тестового модуля
// Неопределено - Если метод вызывается за рамками тестового модуля
Функция КонтекстМодуля() Экспорт
Возврат ЗначениеКонтекста(ИмяКонтекстаМодуля());
КонецФункции
Функция ГлобальныеНастройкиВыполнения() Экспорт
Возврат ЗначениеКонтекста(ИмяГлобальныеНастройкиВыполнения());
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -123,7 +150,7 @@
// Неопределено, Структура - Контекст ошибки, см. ЮТРегистрацияОшибок.НовыйКонтекстОшибки // Неопределено, Структура - Контекст ошибки, см. ЮТРегистрацияОшибок.НовыйКонтекстОшибки
Функция КонтекстОшибки() Экспорт Функция КонтекстОшибки() Экспорт
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаОшибки()); Возврат ЗначениеКонтекста(ИмяКонтекстаОшибки());
КонецФункции КонецФункции
@ -133,7 +160,7 @@
// Неопределено, Структура - Контекст проверки // Неопределено, Структура - Контекст проверки
Функция КонтекстПроверки() Экспорт Функция КонтекстПроверки() Экспорт
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаУтверждений()); Возврат ЗначениеКонтекста(ИмяКонтекстаУтверждений());
КонецФункции КонецФункции
@ -143,7 +170,17 @@
// Неопределено, Структура - Контекст проверки // Неопределено, Структура - Контекст проверки
Функция КонтекстЧитателя() Экспорт Функция КонтекстЧитателя() Экспорт
Возврат ЮТКонтекст.ЗначениеКонтекста(ИмяКонтекстаЧитателя()); Возврат ЗначениеКонтекста(ИмяКонтекстаЧитателя());
КонецФункции
// КонтекстЧитателя
// Возвращает служебный контекста, данные используемые исполнителем тестов
// Возвращаемое значение:
// см. ЮТИсполнитель.ДанныеКонтекстаИсполнения
Функция КонтекстИсполнения() Экспорт
Возврат ЗначениеКонтекста(ИмяКонтекстаИсполнения());
КонецФункции КонецФункции
@ -158,31 +195,49 @@
Процедура УстановитьКонтекстОшибки() Экспорт Процедура УстановитьКонтекстОшибки() Экспорт
ДанныеОшибки = ЮТФабрика.ОписаниеКонтекстаОшибки(); ДанныеОшибки = ЮТФабрика.ОписаниеКонтекстаОшибки();
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаОшибки(), ДанныеОшибки); УстановитьЗначениеКонтекста(ИмяКонтекстаОшибки(), ДанныеОшибки);
КонецПроцедуры КонецПроцедуры
Процедура УстановитьКонтекстУтверждений(Знач ДанныеКонтекста) Экспорт Процедура УстановитьКонтекстУтверждений(Знач ДанныеКонтекста) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаУтверждений(), ДанныеКонтекста); УстановитьЗначениеКонтекста(ИмяКонтекстаУтверждений(), ДанныеКонтекста);
КонецПроцедуры КонецПроцедуры
Процедура УстановитьКонтекстНабораТестов(Знач ДанныеКонтекста) Экспорт Процедура УстановитьКонтекстНабораТестов(Знач ДанныеКонтекста) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаНабораТестов(), ДанныеКонтекста); УстановитьЗначениеКонтекста(ИмяКонтекстаНабораТестов(), ДанныеКонтекста);
КонецПроцедуры
Процедура УстановитьКонтекстМодуля(Знач ДанныеКонтекста) Экспорт
УстановитьЗначениеКонтекста(ИмяКонтекстаМодуля(), ДанныеКонтекста);
КонецПроцедуры КонецПроцедуры
Процедура УстановитьКонтекстТеста(Знач ДанныеКонтекста) Экспорт Процедура УстановитьКонтекстТеста(Знач ДанныеКонтекста) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаТеста(), ДанныеКонтекста); УстановитьЗначениеКонтекста(ИмяКонтекстаТеста(), ДанныеКонтекста);
КонецПроцедуры КонецПроцедуры
Процедура УстановитьКонтекстЧитателя(Знач ДанныеКонтекста, Знач УстановитьНаСервер = Ложь) Экспорт Процедура УстановитьКонтекстЧитателя(Знач ДанныеКонтекста) Экспорт
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЧитателя(), ДанныеКонтекста, УстановитьНаСервер); УстановитьЗначениеКонтекста(ИмяКонтекстаЧитателя(), ДанныеКонтекста, Истина);
КонецПроцедуры
Процедура УстановитьКонтекстИсполнения(Знач ДанныеКонтекста) Экспорт
УстановитьЗначениеКонтекста(ИмяКонтекстаИсполнения(), ДанныеКонтекста, Истина);
КонецПроцедуры
Процедура УстановитьГлобальныеНастройкиВыполнения(Знач Настройки) Экспорт
УстановитьЗначениеКонтекста(ИмяГлобальныеНастройкиВыполнения(), Настройки, Истина);
КонецПроцедуры КонецПроцедуры
@ -211,6 +266,12 @@
КонецФункции КонецФункции
Функция ИмяКонтекстаМодуля()
Возврат "КонтекстМодуля";
КонецФункции
Функция ИмяКонтекстаТеста() Функция ИмяКонтекстаТеста()
Возврат "КонтекстТеста"; Возврат "КонтекстТеста";
@ -223,4 +284,16 @@
КонецФункции КонецФункции
Функция ИмяГлобальныеНастройкиВыполнения()
Возврат "ГлобальныеНастройкиВыполнения";
КонецФункции
Функция ИмяКонтекстаИсполнения()
Возврат "КонтекстИсполнения";
КонецФункции
#КонецОбласти #КонецОбласти

View File

@ -0,0 +1,93 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2022 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="c0983c71-269a-40ef-bd4d-3e08f4003d6c">
<name>ЮТКонтекстТеста</name>
<synonym>
<key>ru</key>
<value>Контекст теста</value>
</synonym>
<clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule>

View File

@ -427,67 +427,84 @@
КонецФункции КонецФункции
Функция ЗначениеВМассиве(Значение, Функция ЗначениеВМассиве(Значение,
Значение2 = Неопределено, Значение2 = "_!%*",
Значение3 = Неопределено, Значение3 = "_!%*",
Значение4 = Неопределено, Значение4 = "_!%*",
Значение5 = Неопределено, Значение5 = "_!%*",
Значение6 = Неопределено, Значение6 = "_!%*",
Значение7 = Неопределено, Значение7 = "_!%*",
Значение8 = Неопределено, Значение8 = "_!%*",
Значение9 = Неопределено) Экспорт Значение9 = "_!%*",
Значение10 = "_!%*") Экспорт
Массив = Новый Массив; Массив = Новый Массив;
Массив.Добавить(Значение); Массив.Добавить(Значение);
Если Не Значение2 = Неопределено Тогда ФлагОкончания = "_!%*";
Массив.Добавить(Значение2); Значения = Новый Массив;
Если Значение <> ФлагОкончания Тогда
Значения.Добавить(Значение);
Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение3 = Неопределено Тогда Если Значение2 <> ФлагОкончания Тогда
Значения.Добавить(Значение2);
Массив.Добавить(Значение3); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение4 = Неопределено Тогда Если Значение3 <> ФлагОкончания Тогда
Значения.Добавить(Значение3);
Массив.Добавить(Значение4); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение5 = Неопределено Тогда Если Значение4 <> ФлагОкончания Тогда
Значения.Добавить(Значение4);
Массив.Добавить(Значение5); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение6 = Неопределено Тогда Если Значение5 <> ФлагОкончания Тогда
Значения.Добавить(Значение5);
Массив.Добавить(Значение6); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение7 = Неопределено Тогда Если Значение6 <> ФлагОкончания Тогда
Значения.Добавить(Значение6);
Массив.Добавить(Значение7); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение8 = Неопределено Тогда Если Значение7 <> ФлагОкончания Тогда
Значения.Добавить(Значение7);
Массив.Добавить(Значение8); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Если Не Значение9 = Неопределено Тогда Если Значение8 <> ФлагОкончания Тогда
Значения.Добавить(Значение8);
Массив.Добавить(Значение9); Иначе
Возврат Значения;
КонецЕсли; КонецЕсли;
Возврат Массив; Если Значение9 <> ФлагОкончания Тогда
Значения.Добавить(Значение9);
Иначе
Возврат Значения;
КонецЕсли;
Если Значение10 <> ФлагОкончания Тогда
Значения.Добавить(Значение10);
Иначе
Возврат Значения;
КонецЕсли;
Возврат Значения;
КонецФункции КонецФункции
@ -593,7 +610,7 @@
Алгоритм = ПолноеИмяМетода; Алгоритм = ПолноеИмяМетода;
ИначеЕсли Параметры = Неопределено Тогда ИначеЕсли НЕ ЗначениеЗаполнено(Параметры) Тогда
Алгоритм = ПолноеИмяМетода + "()"; Алгоритм = ПолноеИмяМетода + "()";
@ -602,7 +619,7 @@
Алгоритм = ""; Алгоритм = "";
Для Инд = 0 По Параметры.ВГраница() Цикл Для Инд = 0 По Параметры.ВГраница() Цикл
Алгоритм = ЮТОбщий.ДобавитьСтроку(Алгоритм, СтрШаблон("Параметры[%1]", Инд), ", "); Алгоритм = ДобавитьСтроку(Алгоритм, СтрШаблон("Параметры[%1]", Инд), ", ");
КонецЦикла; КонецЦикла;
@ -741,6 +758,24 @@
КонецФункции КонецФункции
Процедура ВызовУстаревшегоМетода(УстаревшийМетод, РекомендуемыйМетод = Неопределено) Экспорт
Сообщение = СтрШаблон("Используется устаревший метод '%1'. В следующий релизах метод будет удален", УстаревшийМетод);
Если ЗначениеЗаполнено(РекомендуемыйМетод) Тогда
Сообщение = СтрШаблон("%1. Рекомендуется использовать '%2'", Сообщение, РекомендуемыйМетод);
КонецЕсли;
СообщитьПользователю(Сообщение);
КонецПроцедуры
Функция УстановленБезопасныйРежим() Экспорт
Возврат ЮТОбщийВызовСервера.УстановленБезопасныйРежим();
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////

View File

@ -42,6 +42,12 @@
КонецФункции КонецФункции
Функция УстановленБезопасныйРежим() Экспорт
Возврат БезопасныйРежим();
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////

View File

@ -147,7 +147,7 @@
КонецЕсли; КонецЕсли;
КонецЕсли; КонецЕсли;
Если ЗаписатьСтек Тогда Если ЗаписатьСтек И ОписаниеОшибки.Стек <> Неопределено Тогда
ЗаписьXML.ЗаписатьТекст(ОписаниеОшибки.Стек); ЗаписьXML.ЗаписатьТекст(ОписаниеОшибки.Стек);
КонецЕсли; КонецЕсли;

View File

@ -28,7 +28,7 @@
// ПараметрыЗапускаСтрокой - Строка - Параметры запуска приложения // ПараметрыЗапускаСтрокой - Строка - Параметры запуска приложения
// //
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Загруженные параметры запуска, см. ЮТФабрика.ПараметрыЗапуска // см. ЮТФабрика.ПараметрыЗапуска
Функция ПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой) Экспорт Функция ПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой) Экспорт
Попытка Попытка
@ -54,6 +54,27 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Функция ЗначениеНастройкиТеста(ИмяНастройки, ОписаниеТеста, ОписаниеТестовогоНабора, ЗначениеПоУмолчанию) Экспорт
Значение = ЗначениеПоУмолчанию;
Если ОписаниеТеста.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТеста.НастройкиВыполнения[ИмяНастройки];
ИначеЕсли ОписаниеТестовогоНабора.НастройкиВыполнения.Свойство(ИмяНастройки) Тогда
Значение = ОписаниеТестовогоНабора.НастройкиВыполнения[ИмяНастройки];
Иначе
ГлобальныеНастройки = ЮТКонтекст.ГлобальныеНастройкиВыполнения();
Если ГлобальныеНастройки.Свойство(ИмяНастройки) Тогда
Значение = ГлобальныеНастройки[ИмяНастройки];
КонецЕсли;
КонецЕсли;
Возврат Значение;
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -70,7 +91,7 @@
// Формат строки "RunUnitTests=/путь/к/конфигурационному/файлу", где ключ указывается обязательно, а путь - по желанию // Формат строки "RunUnitTests=/путь/к/конфигурационному/файлу", где ключ указывается обязательно, а путь - по желанию
// //
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Прочитанные параметры. См. Параметры // см. ЮТФабрика.ПараметрыЗапуска
Функция ПрочитатьПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой) Функция ПрочитатьПараметрыЗапуска(Знач ПараметрыЗапускаСтрокой)
Параметры = ЮТФабрика.ПараметрыЗапуска(); Параметры = ЮТФабрика.ПараметрыЗапуска();
@ -125,6 +146,10 @@
#Если НЕ ВебКлиент Тогда #Если НЕ ВебКлиент Тогда
Если ЮТОбщий.УстановленБезопасныйРежим() Тогда
ВызватьИсключение "Раширение подключено в безопасном режиме. Чтение конфигурационного файла недоступно";
КонецЕсли;
Файл = Новый Файл(ПутьКФайлу); Файл = Новый Файл(ПутьКФайлу);
Если Не Файл.Существует() Тогда Если Не Файл.Существует() Тогда
@ -138,7 +163,7 @@
Текст = ЮТОбщий.ДанныеТекстовогоФайла(ПутьКФайлу); Текст = ЮТОбщий.ДанныеТекстовогоФайла(ПутьКФайлу);
Если ЗначениеЗаполнено(Текст) Тогда Если ЗначениеЗаполнено(Текст) Тогда
ДанныеФайла = ЮТПараметрыСервер.ПрочитатьКонфигурационныйФайл(Текст); ДанныеФайла = ЮТОбщий.ЗначениеИзJSON(Текст);
КонецЕсли; КонецЕсли;
Исключение Исключение

View File

@ -22,13 +22,15 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
#Область ФиксацияОшибокВРезультате
// Регистрирует ошибку обработки события исполнения тестов // Регистрирует ошибку обработки события исполнения тестов
// //
// Параметры: // Параметры:
// ИмяСобытия - Строка // ИмяСобытия - Строка
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов // ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
// Ошибка - ИнформацияОбОшибке // Ошибка - ИнформацияОбОшибке
Процедура ЗарегистрироватьОшибкуСобытия(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия; ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
Пояснение = СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, Ошибка.Описание); Пояснение = СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, Ошибка.Описание);
@ -69,6 +71,8 @@
Если ТипОшибки = ЮТФабрика.ТипыОшибок().Утверждений Тогда Если ТипОшибки = ЮТФабрика.ТипыОшибок().Утверждений Тогда
ДанныеОшибки = ДанныеОшибкиУтверждений(Ошибка); ДанныеОшибки = ДанныеОшибкиУтверждений(Ошибка);
ИначеЕсли ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен Тогда
ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка);
Иначе Иначе
ДанныеОшибки = ДанныеОшибки(Ошибка, Ошибка.Описание, ТипОшибки); ДанныеОшибки = ДанныеОшибки(Ошибка, Ошибка.Описание, ТипОшибки);
КонецЕсли; КонецЕсли;
@ -88,6 +92,8 @@
КонецПроцедуры КонецПроцедуры
#КонецОбласти
// Вызввает ошибку выполнения теста, на основании перехваченной ошибки // Вызввает ошибку выполнения теста, на основании перехваченной ошибки
// //
// Параметры: // Параметры:
@ -132,6 +138,16 @@
КонецПроцедуры КонецПроцедуры
Процедура Пропустить(Сообщение) Экспорт
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
СтруктураОшибки.ОшибкаУтверждения = Ложь;
СообщениеОбОшибке = СообщениеОбОшибке(Сообщение, ПрефиксОшибкиПропуска());
ВызватьИсключение СообщениеОбОшибке;
КонецПроцедуры
Функция ПредставлениеОшибки(Знач Описание, Знач Ошибка) Экспорт Функция ПредставлениеОшибки(Знач Описание, Знач Ошибка) Экспорт
Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
@ -199,6 +215,10 @@
ТипОшибки = ТипыОшибок.Утверждений; ТипОшибки = ТипыОшибок.Утверждений;
ИначеЕсли СтрНачинаетсяС(Описание, ПрефиксОшибкиПропуска()) Тогда
ТипОшибки = ТипыОшибок.Пропущен;
Иначе Иначе
ТипОшибки = ТипыОшибок.Исполнения; ТипОшибки = ТипыОшибок.Исполнения;
@ -219,6 +239,12 @@
Возврат "[Broken]"; Возврат "[Broken]";
КонецФункции
Функция ПрефиксОшибкиПропуска() Экспорт
Возврат "[Skip]";
КонецФункции КонецФункции
Функция СтатусВыполненияТеста(Тест) Экспорт Функция СтатусВыполненияТеста(Тест) Экспорт
@ -297,11 +323,12 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
#Область КонструкторыОписанийОшибки
Функция ДанныеОшибки(Ошибка, Сообщение, ТипОшибки) Функция ДанныеОшибки(Ошибка, Сообщение, ТипОшибки)
ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(); ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение);
ДанныеОшибки.Сообщение = ТипОшибки + ": " + Сообщение;
Если Ошибка <> Неопределено Тогда Если Ошибка <> Неопределено Тогда
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка); ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
КонецЕсли; КонецЕсли;
@ -314,18 +341,10 @@
Функция ДанныеОшибкиУтверждений(Ошибка) Функция ДанныеОшибкиУтверждений(Ошибка)
ДлинаПрефикса = СтрДлина(ПрефиксОшибкиУтверждений()); Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений());
Описание = Сред(Ошибка.Описание, ДлинаПрефикса + 1); ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения(Описание);
Описание = СокрЛП(Описание);
Если СтрНачинаетсяС(Описание, "<") И СтрЗаканчиваетсяНа(Описание, ">") Тогда
Описание = Сред(Описание, 2, СтрДлина(Описание) - 2);
КонецЕсли;
ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения();
ДанныеОшибки.Сообщение = Описание;
ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка); ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
ДобавитьСообщенияПользователю(ДанныеОшибки); ДобавитьСообщенияПользователю(ДанныеОшибки);
@ -340,6 +359,33 @@
КонецФункции КонецФункции
Функция ДанныеОшибкиПропуска(Ошибка)
Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиПропуска());
ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиПропуска(Описание);
Возврат ДанныеОшибки;
КонецФункции
Функция ИзвлечьТекстОшибки(Ошибка, Префикс)
ДлинаПрефикса = СтрДлина(Префикс);
Описание = Сред(Ошибка.Описание, ДлинаПрефикса + 1);
Описание = СокрЛП(Описание);
Если СтрНачинаетсяС(Описание, "<") И СтрЗаканчиваетсяНа(Описание, ">") Тогда
Описание = Сред(Описание, 2, СтрДлина(Описание) - 2);
КонецЕсли;
Возврат Описание;
КонецФункции
#КонецОбласти
Функция МодулиУтверждений() Функция МодулиУтверждений()
Возврат ЮТОбщий.ЗначениеВМассиве("ЮТУтверждения"); Возврат ЮТОбщий.ЗначениеВМассиве("ЮТУтверждения");

View File

@ -29,12 +29,23 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
Процедура Инициализация(ПараметрыЗапуска) Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(ПараметрыЗапуска);
ВызватьОбработчикРасширения("Инициализация", Параметры);
КонецПроцедуры
#Область СобытияИсполненияТестов
// Обработчик события "ПередВсемиТестамиМодуля" // Обработчик события "ПередВсемиТестамиМодуля"
// //
// Параметры: // Параметры:
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля // ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль) Экспорт Процедура ПередВсемиТестамиМодуля(ТестовыйМодуль) Экспорт
ЮТКонтекст.УстановитьКонтекстМодуля(Новый Структура());
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль); ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль);
ВызватьОбработкуСобытия("ПередВсемиТестами", ОписаниеСобытия); ВызватьОбработкуСобытия("ПередВсемиТестами", ОписаниеСобытия);
@ -54,13 +65,13 @@
КонецПроцедуры КонецПроцедуры
// Обработчик события "ПередТестом" // Обработчик события "ПередКаждымТестом"
// //
// Параметры: // Параметры:
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля // ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста // Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
Процедура ПередТестом(ТестовыйМодуль, Набор, Тест) Экспорт Процедура ПередКаждымТестом(ТестовыйМодуль, Набор, Тест) Экспорт
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест);
ЮТКонтекст.УстановитьКонтекстТеста(Новый Структура()); ЮТКонтекст.УстановитьКонтекстТеста(Новый Структура());
@ -75,21 +86,23 @@
КонецЕсли; КонецЕсли;
#КонецЕсли #КонецЕсли
ВызватьОбработкуСобытия("ПередКаждымТестом", ОписаниеСобытия);
ВызватьОбработкуСобытия("ПередТестом", ОписаниеСобытия); ВызватьОбработкуСобытия("ПередТестом", ОписаниеСобытия);
КонецПроцедуры КонецПроцедуры
// Обработчик события "ПослеТеста" // Обработчик события "ПослеКаждогоТеста"
// //
// Параметры: // Параметры:
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля // ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
// Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов // Набор - см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
// Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста // Тест - см. ЮТФабрика.ОписаниеИсполняемогоТеста
Процедура ПослеТеста(ТестовыйМодуль, Набор, Тест) Экспорт Процедура ПослеКаждогоТеста(ТестовыйМодуль, Набор, Тест) Экспорт
ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест); ОписаниеСобытия = ЮТФабрика.ОписаниеСобытияИсполненияТестов(ТестовыйМодуль, Набор, Тест);
ВызватьОбработкуСобытия("ПослеТеста", ОписаниеСобытия); ВызватьОбработкуСобытия("Послееста", ОписаниеСобытия);
ВызватьОбработкуСобытия("ПослеКаждогоТеста", ОписаниеСобытия);
#Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда #Если Сервер ИЛИ ТолстыйКлиентОбычноеПриложение ИЛИ ТолстыйКлиентУправляемоеПриложение Тогда
Если ВТранзакции(ОписаниеСобытия) Тогда Если ВТранзакции(ОписаниеСобытия) Тогда
@ -126,20 +139,35 @@
КонецПроцедуры КонецПроцедуры
Процедура ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия) #КонецОбласти
ЭтоСобытиеПеред = СтрНачинаетсяС(ИмяСобытия, "Перед"); #Область СобытияЗагрузкиТестов
Если ЭтоСобытиеПеред Тогда // Обработчик события "ПередЧтениемСценариевМодуля"
ВызватьОбработчикРасширения(ИмяСобытия, ОписаниеСобытия); // Позволяет настроить базовые параметры перед чтением настроек тестов модуля
ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия); // Параметры:
Иначе // МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия); Процедура ПередЧтениемСценариевМодуля(МетаданныеМодуля) Экспорт
ВызватьОбработчикРасширения(ИмяСобытия, ОписаниеСобытия);
КонецЕсли; Параметры = ЮТОбщий.ЗначениеВМассиве(МетаданныеМодуля);
ВызватьОбработчикРасширения("ПередЧтениемСценариевМодуля", Параметры);
КонецПроцедуры КонецПроцедуры
// После чтения сценариев модуля.
// Позволяет настроить/обработать параметры загруженных настроек тестов модуля
// Параметры:
// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
// ИсполняемыеСценарии - см. ЮТТесты.СценарииМодуля
Процедура ПослеЧтенияСценариевМодуля(МетаданныеМодуля, ИсполняемыеСценарии) Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(МетаданныеМодуля, ИсполняемыеСценарии);
ВызватьОбработчикРасширения("ПослеЧтенияСценариевМодуля", Параметры);
КонецПроцедуры
#КонецОбласти
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -147,22 +175,46 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область СлужебныеПроцедурыИФункции #Область СлужебныеПроцедурыИФункции
Процедура ВызватьОбработчикРасширения(ИмяСобытия, ОписаниеСобытия) Процедура ВызватьОбработкуСобытия(ИмяСобытия, ОписаниеСобытия)
ЭтоСобытиеПеред = СтрНачинаетсяС(ИмяСобытия, "Перед");
Параметры = ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия);
Если ЭтоСобытиеПеред Тогда
Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры);
ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия);
Иначе
ВызватьОбработчикТестовогоМодуля(ИмяСобытия, ОписаниеСобытия);
Ошибки = ВызватьОбработчикРасширения(ИмяСобытия, Параметры);
КонецЕсли;
Для Каждого Ошибка Из Ошибки Цикл
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка);
КонецЦикла;
КонецПроцедуры
Функция ВызватьОбработчикРасширения(ИмяСобытия, ПараметрыСобытия)
Ошибки = Новый Массив();
Для Каждого ИмяМодуля Из ЮТРасширения.ОбработчикиСобытий() Цикл Для Каждого ИмяМодуля Из ЮТРасширения.ОбработчикиСобытий() Цикл
Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда Если ЮТОбщий.МетодМодуляСуществует(ИмяМодуля, ИмяСобытия) Тогда
ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяСобытия); ПолноеИмяМетода = СтрШаблон("%1.%2", ИмяМодуля, ИмяСобытия);
Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ЮТОбщий.ЗначениеВМассиве(ОписаниеСобытия)); Ошибка = ЮТОбщий.ВыполнитьМетод(ПолноеИмяМетода, ПараметрыСобытия);
КонецЕсли; КонецЕсли;
Если Ошибка <> Неопределено Тогда Если Ошибка <> Неопределено Тогда
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытия(ИмяСобытия, ОписаниеСобытия, Ошибка); Ошибки.Добавить(Ошибка);
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
КонецПроцедуры Возврат Ошибки;
КонецФункции
// Вызвать обработчик модуля. // Вызвать обработчик модуля.
// //
@ -182,7 +234,7 @@
КонецЕсли; КонецЕсли;
Если Ошибка <> Неопределено Тогда Если Ошибка <> Неопределено Тогда
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытия(ИмяСобытия, ОписаниеСобытия, Ошибка); ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка);
КонецЕсли; КонецЕсли;
КонецПроцедуры КонецПроцедуры
@ -191,15 +243,7 @@
ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции; ИмяПараметра = ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции;
Если ОписаниеСобытия.Тест.НастройкиВыполнения.Свойство(ИмяПараметра) Тогда Возврат ЮТПараметры.ЗначениеНастройкиТеста(ИмяПараметра, ОписаниеСобытия.Тест, ОписаниеСобытия.Набор, Ложь);
ВТранзакции = ОписаниеСобытия.Тест.НастройкиВыполнения[ИмяПараметра];
ИначеЕсли ОписаниеСобытия.Набор.НастройкиВыполнения.Свойство(ИмяПараметра) Тогда
ВТранзакции = ОписаниеСобытия.Набор.НастройкиВыполнения[ИмяПараметра];
Иначе
ВТранзакции = Ложь;
КонецЕсли;
Возврат ВТранзакции;
КонецФункции КонецФункции

View File

@ -314,18 +314,6 @@
КонецФункции КонецФункции
// Варианты.
//
// Параметры:
// Реквизиты - Строка - Реквизиты
//
// Возвращаемое значение:
// ОбщийМодуль
Функция Варианты(Реквизиты) Экспорт
Возврат ЮТКонструкторВариантов.Варианты(Реквизиты);
КонецФункции
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
// Экспортные процедуры и функции для служебного использования внутри подсистемы // Экспортные процедуры и функции для служебного использования внутри подсистемы
@ -333,21 +321,21 @@
#Область СлужебныйПрограммныйИнтерфейс #Область СлужебныйПрограммныйИнтерфейс
// Обработчик события "ПередТестом" // Обработчик события "ПередКаждымТестом"
// //
// Параметры: // Параметры:
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов // ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
Процедура ПередТестом(ОписаниеСобытия) Экспорт Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт
ЮТКонтекст.КонтекстТеста().Вставить("ВременныеФайлы", Новый Массив); ЮТКонтекст.КонтекстТеста().Вставить("ВременныеФайлы", Новый Массив);
КонецПроцедуры КонецПроцедуры
// Обработчик события "ПослеТеста" // Обработчик события "ПослеКаждогоТеста"
// //
// Параметры: // Параметры:
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов // ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
Процедура ПослеТеста(ОписаниеСобытия) Экспорт Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
ВременныеФайлы = ЮТКонтекст.КонтекстТеста().ВременныеФайлы; ВременныеФайлы = ЮТКонтекст.КонтекстТеста().ВременныеФайлы;

View File

@ -26,15 +26,15 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс #Область ПрограммныйИнтерфейс
// ТестовыйНабор // ДобавитьТестовыйНабор
// Создает и регистрирует набор, в который будут добавлятся последующие тесты // Создает и регистрирует набор, в который будут добавлятся последующие тесты
// Параметры: // Параметры:
// Имя - Строка - Имя набора тестов // Имя - Строка - Имя набора тестов
// ТегиСтрокой - Строка - Теги относящиеся к набору и вложенным тестам. Это строка разделенная запятыми // ТегиСтрокой - Строка - Теги относящиеся к набору и вложенным тестам. Это строка разделенная запятыми
// //
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестовыйНабор(Имя, ТегиСтрокой = "") Экспорт Функция ДобавитьТестовыйНабор(Имя, ТегиСтрокой = "") Экспорт
ИсполняемыеСценарии = СценарииМодуля(); ИсполняемыеСценарии = СценарииМодуля();
@ -49,7 +49,7 @@
Контекст = Контекст(); Контекст = Контекст();
НовыйТестовыйНабор = ЮТФабрика.ОписаниеТестовогоНабора(Имя, ТегиСтрокой); НовыйТестовыйНабор = ЮТФабрика.ОписаниеТестовогоНабора(Имя, ТегиСтрокой);
ИсполняемыеСценарии.ТестовыеНаборы.Вставить(Имя, НовыйТестовыйНабор); ИсполняемыеСценарии.ТестовыеНаборы.Добавить(НовыйТестовыйНабор);
Контекст.ТекущийНабор = НовыйТестовыйНабор; Контекст.ТекущийНабор = НовыйТестовыйНабор;
Контекст.ТекущийЭлемент = НовыйТестовыйНабор; Контекст.ТекущийЭлемент = НовыйТестовыйНабор;
@ -57,8 +57,11 @@
КонецФункции КонецФункции
// Тест // ДобавитьТест
// Регистрирует тест // Регистрирует тест, исполняемый в контекстах, в которых доступен тестовый модуль
// Напрмер если модуль с тестами клиент-серверный, то тест будет вызван и на клиенте и на сервере
// Если клиентский, то только на клиенте
// Если клиент обычное приложение, то только при запуске в режиме обычного приложения
// Параметры: // Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода // ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста // ПредставлениеТеста - Строка - Представление теста
@ -66,8 +69,8 @@
// Контексты - Строка - Контексты, строка перечисления контекстов вызова, разделенных запятой. // Контексты - Строка - Контексты, строка перечисления контекстов вызова, разделенных запятой.
// Возможные значения см. ЮТФабрика.КонтекстыВызова // Возможные значения см. ЮТФабрика.КонтекстыВызова
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция Тест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено) Экспорт Функция ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено) Экспорт
Контекст = Контекст(); Контекст = Контекст();
Набор = Контекст.ТекущийНабор; Набор = Контекст.ТекущийНабор;
@ -91,33 +94,31 @@
КонецФункции КонецФункции
// ТестКлиент // ДобавитьКлиентскийТест
// Регистрирует текст вызывемый на клиенте // Регистрирует текст исполняемый на клиенте
// Параметры: // Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода // ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста // ПредставлениеТеста - Строка - Представление теста
// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми // ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми
// //
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестКлиент(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт Функция ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт
Тест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, КонтекстыВызоваКлиента());
ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, КонтекстыВызоваКлиента());
Возврат ЮТТесты; Возврат ЮТТесты;
КонецФункции КонецФункции
// Тест сервер. // Регистрирует текст исполняемый на сервере
// Регистрирует текст вызывемый на сервере
// Параметры: // Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода // ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста // ПредставлениеТеста - Строка - Представление теста
// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми // ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми
// //
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестСервер(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт Функция ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт
Режимы = ЮТФабрика.КонтекстыВызова(); Режимы = ЮТФабрика.КонтекстыВызова();
@ -134,7 +135,7 @@
// Значение - Произвольный - Значение настройки // Значение - Произвольный - Значение настройки
// //
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция НастройкаИсполнения(ИмяПараметра, Значение) Экспорт Функция НастройкаИсполнения(ИмяПараметра, Значение) Экспорт
Контекст = Контекст(); Контекст = Контекст();
@ -155,7 +156,7 @@
// ВыполнятьВТранзакции - Булево // ВыполнятьВТранзакции - Булево
// //
// Возвращаемое значение: // Возвращаемое значение:
// CommonModule.ЮТТесты - Этот же модуль, для замыкания // ОбщийМодуль - Этот же модуль, для замыкания
Функция ВТранзакции(ВыполнятьВТранзакции = Истина) Экспорт Функция ВТранзакции(ВыполнятьВТранзакции = Истина) Экспорт
НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции); НастройкаИсполнения(ЮТФабрика.ПараметрыИсполненияТеста().ВТранзакции, ВыполнятьВТранзакции);
@ -164,6 +165,110 @@
КонецФункции КонецФункции
Функция СПараметрами(Параметр1 = "_!%*",
Параметр2 = "_!%*",
Параметр3 = "_!%*",
Параметр4 = "_!%*",
Параметр5 = "_!%*",
Параметр6 = "_!%*",
Параметр7 = "_!%*",
Параметр8 = "_!%*",
Параметр9 = "_!%*",
Параметр10 = "_!%*") Экспорт
Параметры = ЮТОбщий.ЗначениеВМассиве(Параметр1,
Параметр2,
Параметр3,
Параметр4,
Параметр5,
Параметр6,
Параметр7,
Параметр8,
Параметр9,
Параметр10);
Контекст = Контекст();
Если Контекст.ТекущийЭлемент = Неопределено Тогда
ВызватьИсключение "Не инициализированы настройки регистрации тестов";
ИначеЕсли НЕ ЭтоОписаниеТеста(Контекст.ТекущийЭлемент) Тогда
ВызватьИсключение "Параметры устанавливаются только для теста";
КонецЕсли;
Контекст.ТекущийЭлемент.Параметры = Параметры;
Возврат ЮТТесты;
КонецФункции
#Область Устаревшие
// Тест
// Регистрирует тест
// Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста
// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми
// Контексты - Строка - Контексты, строка перечисления контекстов вызова, разделенных запятой.
// Возможные значения см. ЮТФабрика.КонтекстыВызова
// Возвращаемое значение:
// ОбщийМодуль - Этот же модуль, для замыкания
Функция Тест(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "", Контексты = Неопределено) Экспорт
ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.Тест", "ЮТТесты.ДобавитьТест");
Возврат ДобавитьТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой, Контексты);
КонецФункции
// ТестКлиент
// Регистрирует текст вызывемый на клиенте
// Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста
// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми
//
// Возвращаемое значение:
// ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестКлиент(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт
ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестКлиент", "ЮТТесты.ДобавитьКлиентскийТест");
Возврат ДобавитьКлиентскийТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой);
КонецФункции
// Тест сервер.
// Регистрирует текст вызывемый на сервере
// Параметры:
// ИмяТестовогоМетода - Строка - Имя тестового метода
// ПредставлениеТеста - Строка - Представление теста
// ТегиСтрокой - Строка - Теги строкой. Это строка разделенная запятыми
//
// Возвращаемое значение:
// ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестСервер(ИмяТестовогоМетода, ПредставлениеТеста = "", ТегиСтрокой = "") Экспорт
ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестСервер", "ЮТТесты.ДобавитьСерверныйТест");
Возврат ДобавитьСерверныйТест(ИмяТестовогоМетода, ПредставлениеТеста, ТегиСтрокой);
КонецФункции
// ТестовыйНабор
// Создает и регистрирует набор, в который будут добавлятся последующие тесты
// Параметры:
// Имя - Строка - Имя набора тестов
// ТегиСтрокой - Строка - Теги относящиеся к набору и вложенным тестам. Это строка разделенная запятыми
//
// Возвращаемое значение:
// ОбщийМодуль - Этот же модуль, для замыкания
Функция ТестовыйНабор(Имя, ТегиСтрокой = "") Экспорт
ЮТОбщий.ВызовУстаревшегоМетода("ЮТТесты.ТестовыйНабор", "ЮТТесты.ДобавитьТестовыйНабор");
Возврат ДобавитьТестовыйНабор(Имя, ТегиСтрокой);
КонецФункции
#КонецОбласти
#КонецОбласти #КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -176,6 +281,15 @@
ИнициализироватьКонтекст(МетаданныеМодуля); ИнициализироватьКонтекст(МетаданныеМодуля);
ЮТСобытия.ПередЧтениемСценариевМодуля(МетаданныеМодуля);
КонецПроцедуры
Процедура ПослеЧтенияСценариевМодуля() Экспорт
Контекст = Контекст();
ЮТСобытия.ПослеЧтенияСценариевМодуля(Контекст.МетаданныеМодуля, Контекст.ИсполняемыеСценарии);
КонецПроцедуры КонецПроцедуры
// Описание сценариев модуля // Описание сценариев модуля
@ -198,18 +312,19 @@
// Исполняемые сценарии. // Исполняемые сценарии.
// //
// Параметры:
// МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
//
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Исполняемые сценарии: // Структура -- Исполняемые сценарии::
// * ТестовыеНаборы - Соответствие - Тестовые наборы модуля // * ТестовыеНаборы - Массив из см. ЮТФабрика.ОписаниеТестовогоНабора - Тестовые наборы модуля
// * Ключ - Строка - Имя тестового набора Функция ИсполняемыеСценарии(МетаданныеМодуля)
// * Значение - см. ЮТФабрика.ОписаниеТестовогоНабора
Функция ИсполняемыеСценарии()
Структура = Новый Структура; Структура = Новый Структура;
Структура.Вставить("ТестовыеНаборы", Новый Соответствие); Структура.Вставить("ТестовыеНаборы", Новый Массив());
НаборПоУмолчанию = ЮТФабрика.ОписаниеТестовогоНабора("Тесты"); Набор = ЮТФабрика.ОписаниеТестовогоНабора(МетаданныеМодуля.Имя);
Структура.ТестовыеНаборы.Вставить(НаборПоУмолчанию.Имя, НаборПоУмолчанию); Структура.ТестовыеНаборы.Добавить(Набор);
Возврат Структура; Возврат Структура;
@ -218,14 +333,13 @@
Функция КонтекстыВызоваКлиента() Функция КонтекстыВызоваКлиента()
Режимы = ЮТФабрика.КонтекстыВызова(); Режимы = ЮТФабрика.КонтекстыВызова();
Возврат ЮТОбщий.ЗначениеВМассиве(Режимы.КлиентУправляемоеПриложение, Режимы.КлиентОбычноеПриложение);
Возврат СтрШаблон("%1, %2", Режимы.КлиентУправляемоеПриложение, Режимы.КлиентОбычноеПриложение);
КонецФункции КонецФункции
Функция КонтекстыВызоваПоУмолчанию() Функция КонтекстыВызоваПоУмолчанию()
Возврат СтрСоединить(ЮТФабрика.КонтекстыМодуля(Контекст().МетаданныеМодуля), ", "); Возврат ЮТФабрика.КонтекстыМодуля(Контекст().МетаданныеМодуля);
КонецФункции КонецФункции
@ -233,6 +347,8 @@
Если НЕ ЗначениеЗаполнено(Контексты) Тогда Если НЕ ЗначениеЗаполнено(Контексты) Тогда
Контексты = КонтекстыВызоваПоУмолчанию(); Контексты = КонтекстыВызоваПоУмолчанию();
ИначеЕсли ТипЗнч(Контексты) = Тип("Строка") Тогда
Контексты = СтрРазделить(Контексты, ", ", Ложь);
КонецЕсли; КонецЕсли;
Возврат ЮТФабрика.ОписаниеТеста(Имя, Представление, Контексты, ТегиСтрокой); Возврат ЮТФабрика.ОписаниеТеста(Имя, Представление, Контексты, ТегиСтрокой);
@ -242,7 +358,7 @@
Функция ЭтоИсполняемыеСценарии(ИсполняемыеСценарии) Функция ЭтоИсполняемыеСценарии(ИсполняемыеСценарии)
Возврат ТипЗнч(ИсполняемыеСценарии) = Тип("Структура") Возврат ТипЗнч(ИсполняемыеСценарии) = Тип("Структура")
И ТипЗнч(ЮТОбщий.ЗначениеСтруктуры(ИсполняемыеСценарии, "ТестовыеНаборы")) = Тип("Соответствие"); И ТипЗнч(ЮТОбщий.ЗначениеСтруктуры(ИсполняемыеСценарии, "ТестовыеНаборы")) = Тип("Массив");
КонецФункции КонецФункции
@ -260,12 +376,6 @@
КонецФункции КонецФункции
Функция ТестовыйНаборПоУмолчанию(ИсполняемыеСценарии)
Возврат ИсполняемыеСценарии.ТестовыеНаборы["Тесты"];
КонецФункции
#Область Контекст #Область Контекст
Функция Контекст() Функция Контекст()
@ -276,27 +386,8 @@
Процедура ИнициализироватьКонтекст(МетаданныеМодуля) Процедура ИнициализироватьКонтекст(МетаданныеМодуля)
КонтекстРегистрации = ОписаниеКонтекстаРегистрацииСценариев(МетаданныеМодуля); ИсполняемыеСценарии = ИсполняемыеСценарии(МетаданныеМодуля);
Набор = ИсполняемыеСценарии.ТестовыеНаборы[0];
ЮТКонтекст.УстановитьЗначениеКонтекста("КонтекстРегистрацияТестов", КонтекстРегистрации);
КонецПроцедуры
// Описание контекста регистрации сценариев.
//
// Параметры:
// МетаданныеМодуля - Структура - Метаданные модуля, см. ЮТФабрика.ОписаниеМодуля
//
// Возвращаемое значение:
// Структура - Описание контекста регистрации сценариев:
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
// * ИсполняемыеСценарии - Структура -:
// ** ТестовыеНаборы - Соответствие -
Функция ОписаниеКонтекстаРегистрацииСценариев(МетаданныеМодуля)
ИсполняемыеСценарии = ИсполняемыеСценарии();
Набор = ТестовыйНаборПоУмолчанию(ИсполняемыеСценарии);
Набор.Представление = МетаданныеМодуля.Имя;
Контекст = Новый Структура(); Контекст = Новый Структура();
@ -305,9 +396,9 @@
Контекст.Вставить("ТекущийНабор", Набор); Контекст.Вставить("ТекущийНабор", Набор);
Контекст.Вставить("ТекущийЭлемент", Набор); Контекст.Вставить("ТекущийЭлемент", Набор);
Возврат Контекст; ЮТКонтекст.УстановитьЗначениеКонтекста("КонтекстРегистрацияТестов", Контекст);
КонецФункции КонецПроцедуры
#КонецОбласти #КонецОбласти

View File

@ -115,18 +115,47 @@
УстановитьОписаниеПроверки(ОписаниеПроверки); УстановитьОписаниеПроверки(ОписаниеПроверки);
Контекст = Контекст(); Контекст = Контекст();
Контекст.ИмяСвойства = ""; // Очищаем для формирования корректного сообщения об ошибке Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
ЭтоДействительнаяЦепочкаСвойств(Контекст.ПроверяемоеЗначение, ИмяСвойства, Истина); Путь = НормализованныйПутьКСвойству(Контекст.ПроверяемоеЗначение, ИмяСвойства, Истина);
Контекст.ИмяСвойства = ИмяСвойства; Контекст.ИмяСвойства = ИмяСвойства;
Контекст.НормализованныйПутьКСвойству = Путь;
Возврат ЮТУтверждения;
КонецФункции
// Проверяет наличие элемента с указанным индексом и позиционируется на нем для последующих проверок
//
// Параметры:
// Индекс - Число - Индекс элемента коллекции
// ОписаниеПроверки - Строка - Описание конкретной проверки
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция Элемент(Знач Индекс, Знач ОписаниеПроверки = Неопределено) Экспорт
Возврат Свойство(Индекс, ОписаниеПроверки);
КонецФункции
// Используется после вызова метода "Свойство", для переключения с ранее указанного свойства на объект
//
// Возвращаемое значение:
// ОбщийМодуль - Этот модуль для замыкания
Функция Объект() Экспорт
Контекст = Контекст();
Контекст.ИмяСвойства = Неопределено;
Возврат ЮТУтверждения; Возврат ЮТУтверждения;
КонецФункции КонецФункции
// НетСвойства // НетСвойства
// Проверяет отсутствие свойства // Проверяет отсутствие свойства основного объекта
// И сбрасывает ранее установленное проверяемое свойство
// //
// Параметры: // Параметры:
// ИмяСвойства - Строка - Наименование свойства объекта. // ИмяСвойства - Строка - Наименование свойства объекта.
@ -139,8 +168,10 @@
УстановитьОписаниеПроверки(ОписаниеПроверки); УстановитьОписаниеПроверки(ОписаниеПроверки);
Контекст = Контекст(); Контекст = Контекст();
Контекст.ИмяСвойства = Неопределено; // Очищаем для формирования корректного сообщения об ошибке
Если ЭтоДействительнаяЦепочкаСвойств(Контекст.ПроверяемоеЗначение, ИмяСвойства, Ложь) Тогда Путь = НормализованныйПутьКСвойству(Контекст.ПроверяемоеЗначение, ИмяСвойства, Ложь);
Если Путь <> Неопределено Тогда
ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства); ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("не содержит свойство `%1`", ИмяСвойства), Неопределено, ИмяСвойства);
КонецЕсли; КонецЕсли;
@ -792,11 +823,42 @@
КонецПроцедуры КонецПроцедуры
// Обработчик события "ПередТестом" // Инициализирует контекст утверждений
//
// Возвращаемое значение:
// Структура - контекст утверждений:
// * ПроверяемоеЗначение - Произвольный
// * ПредставлениеПроверяемогоЗначения - Строка
// * ПрефиксОшибки - Строка
// * ИмяМетода - Строка
// * ИмяСвойства - Строка
// * НормализованныйПутьКСвойству - Неопределено - Не указано свойство
// - Массив из Строка, Число
// * ПараметрыМетода - Неопределено - Не установлены
// - Массив из Произвольный
// * ОписаниеПроверки - Строка
Функция НовыйКонтекстУтверждения() Экспорт
Контекст = Новый Структура;
Контекст.Вставить("ПроверяемоеЗначение", Неопределено);
Контекст.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
Контекст.Вставить("ПрефиксОшибки", "");
Контекст.Вставить("ИмяМетода", "");
Контекст.Вставить("ИмяСвойства", Неопределено);
Контекст.Вставить("НормализованныйПутьКСвойству", Неопределено);
Контекст.Вставить("ПараметрыМетода", Неопределено);
Контекст.Вставить("ОписаниеПроверки", Неопределено);
Возврат Контекст;
КонецФункции
// Обработчик события "ПередКаждымТестом"
// //
// Параметры: // Параметры:
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов // ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
Процедура ПередТестом(ОписаниеСобытия) Экспорт Процедура ПередКаждымТестом(ОписаниеСобытия) Экспорт
ЮТУтверждения.СброситьКонтекст(); ЮТУтверждения.СброситьКонтекст();
@ -812,21 +874,6 @@
#Область Контекст #Область Контекст
Функция НовыйКонтекстУтверждения()
Контекст = Новый Структура;
Контекст.Вставить("ПроверяемоеЗначение", Неопределено);
Контекст.Вставить("ПредставлениеПроверяемогоЗначения", Неопределено);
Контекст.Вставить("ПрефиксОшибки", "");
Контекст.Вставить("ИмяМетода", "");
Контекст.Вставить("ИмяСвойства", "");
Контекст.Вставить("ПараметрыМетода", Неопределено);
Контекст.Вставить("ОписаниеПроверки", Неопределено);
Возврат Контекст;
КонецФункции
Функция ИнициализироватьКонтекстУтверждения() Функция ИнициализироватьКонтекстУтверждения()
Контекст = НовыйКонтекстУтверждения(); Контекст = НовыйКонтекстУтверждения();
@ -857,24 +904,22 @@
Контекст = Контекст(); Контекст = Контекст();
Значение = Контекст.ПроверяемоеЗначение; Значение = Контекст.ПроверяемоеЗначение;
Если ЗначениеЗаполнено(Контекст.ИмяСвойства) Тогда Если Контекст.ИмяСвойства <> Неопределено Тогда
Если ТипЗнч(Контекст.ИмяСвойства) = Тип("Строка") Тогда Для Каждого Часть Из Контекст.НормализованныйПутьКСвойству Цикл
Части = СтрРазделить(Контекст.ИмяСвойства, "."); Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
Значение = Значение.Получить();
КонецЕсли;
Для Каждого Часть Из Части Цикл Если ТипЗнч(Часть) = Тип("Число") И Часть < 0 И ТипЗнч(Значение) <> Тип("Соответствие") Тогда
Часть = Значение.Количество() + Часть;
КонецЕсли;
Значение = Значение[Часть]; Значение = Значение[Часть];
КонецЦикла; КонецЦикла;
Иначе
Значение = Значение[Контекст.ИмяСвойства]; // Для соответствий
КонецЕсли;
КонецЕсли; КонецЕсли;
Возврат Значение; Возврат Значение;
@ -888,9 +933,13 @@
КонецФункции КонецФункции
Функция ЭтоДействительнаяЦепочкаСвойств(Знач Значение, Цепочка, ФиксироватьОшибку = Истина) Функция НормализованныйПутьКСвойству(Знач Значение, Цепочка, ФиксироватьОшибку = Истина)
Если ТипЗнч(Цепочка) = Тип("Строка") Тогда ПутьКСвойству = Новый Массив();
ТипПути = ТипЗнч(Цепочка);
Если ТипПути = Тип("Строка") Тогда
Части = СтрРазделить(Цепочка, "."); Части = СтрРазделить(Цепочка, ".");
@ -900,10 +949,57 @@
ПройденныйПуть.Добавить(Часть); ПройденныйПуть.Добавить(Часть);
ПозицияИндекса = СтрНайти(Часть, "[");
Если ПозицияИндекса > 0 И ПозицияИндекса > 0 И СтрЗаканчиваетсяНа(Часть, "]") Тогда
Если ПозицияИндекса > 1 Тогда
ПутьКСвойству.Добавить(Лев(Часть, ПозицияИндекса - 1));
КонецЕсли;
Пока ПозицияИндекса > 0 Цикл
ЗакрывающаяПозиция = СтрНайти(Часть, "]", , ПозицияИндекса);
ИндексСтрокой = Сред(Часть, ПозицияИндекса + 1, ЗакрывающаяПозиция - ПозицияИндекса - 1);
Индекс = Число(ИндексСтрокой);
ПутьКСвойству.Добавить(Индекс);
ПозицияИндекса = СтрНайти(Часть, "[", , ЗакрывающаяПозиция);
КонецЦикла;
Иначе
ПутьКСвойству.Добавить(Часть);
КонецЕсли;
КонецЦикла;
ИначеЕсли ТипПути = Тип("Соответствие") Тогда
ПутьКСвойству.Добавить(Цепочка);
ИначеЕсли ТипПути = Тип("Число") Тогда
ПутьКСвойству.Добавить(Цепочка);
КонецЕсли;
ПройденныйПуть = Новый Массив();
Для Каждого Часть Из ПутьКСвойству Цикл
ПройденныйПуть.Добавить(Часть);
Если ТипЗнч(Значение) = Тип("ХранилищеЗначения") Тогда
Значение = Значение.Получить();
КонецЕсли;
Попытка Попытка
ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть); ЕстьСвойство = ЗначениеИмеетСвойство(Значение, Часть);
Исключение Исключение
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); ЕстьСвойство = Ложь;
КонецПопытки; КонецПопытки;
Если ЕстьСвойство Тогда Если ЕстьСвойство Тогда
@ -912,20 +1008,12 @@
ПутьСвойства = СтрСоединить(ПройденныйПуть, "."); ПутьСвойства = СтрСоединить(ПройденныйПуть, ".");
ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка); ЮТРегистрацияОшибок.СгенерироватьОшибкуСравнения(СтрШаблон("содержит свойство `%1`", ПутьСвойства), Значение, Цепочка);
Иначе Иначе
Возврат Ложь; Возврат Неопределено;
КонецЕсли; КонецЕсли;
КонецЦикла; КонецЦикла;
Иначе Возврат ПутьКСвойству;
Попытка
Возврат ЗначениеИмеетСвойство(Значение, Цепочка); // Для соответствий
Исключение
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
КонецПопытки;
КонецЕсли;
КонецФункции КонецФункции
@ -949,6 +1037,13 @@
КонецЦикла; КонецЦикла;
ИначеЕсли ТипЗнч(Свойство) = Тип("Число") Тогда
Если Свойство < 0 Тогда
Свойство = Значение.Количество() + Свойство;
КонецЕсли;
Результат = Свойство >= 0 И Значение.Количество() > Свойство;
Иначе Иначе
Результат = ЮТОбщий.ПеременнаяСодержитСвойство(Значение, Свойство); Результат = ЮТОбщий.ПеременнаяСодержитСвойство(Значение, Свойство);
@ -971,7 +1066,7 @@
ИначеЕсли ЭтоТипМассива(ТипПроверяемогоЗначения) Тогда ИначеЕсли ЭтоТипМассива(ТипПроверяемогоЗначения) Тогда
Индекс = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение); Индекс = ПроверяемоеЗначение.Найти(ОжидаемоеЗначение);
ИскомоеЗначениеНайдено = Индекс <> Неопределено И ТипЗнч(ПроверяемоеЗначение[Индекс]) = ТипЗнч(ОжидаемоеЗначение); ИскомоеЗначениеНайдено = Индекс <> Неопределено;
ИначеЕсли ЭтоТипКлючЗначение(ТипПроверяемогоЗначения) Тогда ИначеЕсли ЭтоТипКлючЗначение(ТипПроверяемогоЗначения) Тогда
@ -1152,7 +1247,7 @@
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
КонецПопытки; КонецПопытки;
ОбработатьРезультатУтверждения(Результат, "является заполненным", Реверс, ПроверяемоеЗначение); ОбработатьРезультатСравнения(Результат, "является заполненным", Реверс, ПроверяемоеЗначение, Неопределено);
КонецПроцедуры КонецПроцедуры
@ -1164,7 +1259,7 @@
ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке()); ЮТРегистрацияОшибок.СгенерироватьОшибкуВыполнения(ИнформацияОбОшибке());
КонецПопытки; КонецПопытки;
ОбработатьРезультатУтверждения(Результат, "существует", Реверс, ПроверяемоеЗначение); ОбработатьРезультатСравнения(Результат, "существует", Реверс, ПроверяемоеЗначение, Неопределено);
КонецПроцедуры КонецПроцедуры

View File

@ -112,6 +112,7 @@
// * МалоПараметров - Строка // * МалоПараметров - Строка
// * МногоПараметров - Строка // * МногоПараметров - Строка
// * НекорректныйКонтекстИсполнения - Строка // * НекорректныйКонтекстИсполнения - Строка
// * Пропущен - Строка
Функция ТипыОшибок() Экспорт Функция ТипыОшибок() Экспорт
Типы = Новый Структура; Типы = Новый Структура;
@ -141,11 +142,23 @@
|| ЧтенияТестов | Загрузки тестов | Сломан | || ЧтенияТестов | Загрузки тестов | Сломан |
|| МалоПараметров | Мало фактических параметров | Сломан | || МалоПараметров | Мало фактических параметров | Сломан |
|| МногоПараметров | Много фактических параметров | Сломан | || МногоПараметров | Много фактических параметров | Сломан |
|| НекорректныйКонтекстИсполнения | Некорректный контекст исполнения | Сломан | || НекорректныйКонтекстИсполнения | Некорректный контекст исполнения | Пропущен |
|| Пропущен | Пропущен | Пропущен |
|"); |");
КонецФункции КонецФункции
Функция УровниИсполнения() Экспорт
Уровни = Новый Структура;
Уровни.Вставить("Модуль", "Модуль");
Уровни.Вставить("НаборТестов", "НаборТестов");
Уровни.Вставить("Тест", "Тест");
Возврат Новый ФиксированнаяСтруктура(Уровни);
КонецФункции
#КонецОбласти #КонецОбласти
#Область СтруктурыДанных #Область СтруктурыДанных
@ -207,7 +220,7 @@
// Параметры: // Параметры:
// Имя - Строка - Имя тестового метода // Имя - Строка - Имя тестового метода
// Представление - Строка - Представление, краткое описание теста // Представление - Строка - Представление, краткое описание теста
// КонтекстыВызова - Строка - Контексты исполнения теста, см. КонтекстВызова // КонтекстыВызова - Массив из Строка - Контексты исполнения теста
// ТегиСтрокой - Строка - Теги теста // ТегиСтрокой - Строка - Теги теста
// //
// Возвращаемое значение: // Возвращаемое значение:
@ -217,11 +230,8 @@
// * Теги - Массив из Строка - Теги теста // * Теги - Массив из Строка - Теги теста
// * КонтекстВызова - Массив из Строка - Контексты исполнения теста // * КонтекстВызова - Массив из Строка - Контексты исполнения теста
// * НастройкиВыполнения- Структура - Настройки исполнения теста // * НастройкиВыполнения- Структура - Настройки исполнения теста
Функция ОписаниеТеста(Имя, Знач Представление, КонтекстыВызова, Знач ТегиСтрокой = "") Экспорт // * Параметры - Неопределено, Массив из Произвольный - Параметры теста
Функция ОписаниеТеста(Имя, Представление, КонтекстыВызова, Знач ТегиСтрокой = "") Экспорт
Если НЕ ЗначениеЗаполнено(Представление) Тогда
Представление = Имя;
КонецЕсли;
Если ТегиСтрокой = Неопределено Тогда Если ТегиСтрокой = Неопределено Тогда
ТегиСтрокой = ""; ТегиСтрокой = "";
@ -231,8 +241,9 @@
Описание.Вставить("Имя", Строка(Имя)); Описание.Вставить("Имя", Строка(Имя));
Описание.Вставить("Представление", Строка(Представление)); Описание.Вставить("Представление", Строка(Представление));
Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь)); Описание.Вставить("Теги", СтрРазделить(ТегиСтрокой, ", ", Ложь));
Описание.Вставить("КонтекстВызова", СтрРазделить(КонтекстыВызова, ", ", Ложь)); Описание.Вставить("КонтекстВызова", КонтекстыВызова);
Описание.Вставить("НастройкиВыполнения", Новый Структура()); Описание.Вставить("НастройкиВыполнения", Новый Структура());
Описание.Вставить("Параметры", Неопределено);
Возврат Описание; Возврат Описание;
@ -242,18 +253,18 @@
// Возвращает описание исполняемого тестового набора. // Возвращает описание исполняемого тестового набора.
// Содержит данные необходимые для выполнения прогона тестов // Содержит данные необходимые для выполнения прогона тестов
// Параметры: // Параметры:
// НаборТестов - Массив - Коллекция зарегистрированных тестовых наборов, см. ОписаниеТестовогоНабора // НаборТестов - Массив из см. ОписаниеТеста - Коллекция зарегистрированных тестовых наборов, см. ОписаниеТестовогоНабора
// ТестовыйМодуль - Структура - Описание тестового модуля, см. ЮТФабрика.ОписаниеМодуля // ТестовыйМодуль - Структура - Описание тестового модуля, см. ЮТФабрика.ОписаниеМодуля
// //
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Описание исполняемого набора тестов: // Структура - Описание исполняемого набора тестов:
// * Имя - Строка - Имя набора // * Имя - Строка - Имя набора
// * Представление - Строка - Представление набора // * Представление - Строка - Представление набора
// * Теги - Массив - Тэги набора // * Теги - Массив из Строка - Тэги набора
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста // * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки - Описания ошибок выполнения теста
// * Режим - Строка - Режим исполнения набора, см. КонтекстыВызова // * Режим - Строка - Режим исполнения набора, см. КонтекстыВызова
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля // * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
// * Тесты - Массив - Тесты набора, структуру тестов см. ОписаниеИсполняемогоТеста // * Тесты - Массив из см. ОписаниеИсполняемогоТеста - Тесты набора, структуру тестов см. ОписаниеИсполняемогоТеста
// * Выполнять - Булево - Признак, что можно выполнить прогон набора (нет ошибок блокирующих запуск) // * Выполнять - Булево - Признак, что можно выполнить прогон набора (нет ошибок блокирующих запуск)
// * ДатаСтарта - Число - Дата запуска набора // * ДатаСтарта - Число - Дата запуска набора
// * Длительность - Число - Продолжительность выполнения набора // * Длительность - Число - Продолжительность выполнения набора
@ -265,7 +276,7 @@
Описание.Вставить("Имя", НаборТестов.Имя); Описание.Вставить("Имя", НаборТестов.Имя);
Описание.Вставить("Представление", НаборТестов.Представление); Описание.Вставить("Представление", НаборТестов.Представление);
Описание.Вставить("Теги", НаборТестов.Теги); Описание.Вставить("Теги", НаборТестов.Теги);
Описание.Вставить("Ошибки", НаборТестов.Ошибки); Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(НаборТестов.Ошибки));
Описание.Вставить("Режим", ""); Описание.Вставить("Режим", "");
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля); Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
Описание.Вставить("Тесты", Новый Массив); Описание.Вставить("Тесты", Новый Массив);
@ -303,8 +314,17 @@
ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя); ПолноеИмяМетода = СтрШаблон("%1.%2", ТестовыйМодуль.МетаданныеМодуля.Имя, Тест.Имя);
Если ЗначениеЗаполнено(Тест.Представление) Тогда
Представление = Тест.Представление;
ИначеЕсли ЗначениеЗаполнено(Тест.Параметры) Тогда
ПредставлениеПараметров = СтрСоединить(Тест.Параметры, ", ");
Представление = СтрШаблон("%1(%2)", Тест.Имя, ПредставлениеПараметров);
Иначе
Представление = Тест.Имя;
КонецЕсли;
ОписаниеТеста = Новый Структура; ОписаниеТеста = Новый Структура;
ОписаниеТеста.Вставить("Имя", Тест.Представление); ОписаниеТеста.Вставить("Имя", Представление);
ОписаниеТеста.Вставить("Метод", Тест.Имя); ОписаниеТеста.Вставить("Метод", Тест.Имя);
ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода); ОписаниеТеста.Вставить("ПолноеИмяМетода", ПолноеИмяМетода);
ОписаниеТеста.Вставить("Теги", Тест.Теги); ОписаниеТеста.Вставить("Теги", Тест.Теги);
@ -314,6 +334,7 @@
ОписаниеТеста.Вставить("Статус", СтатусыИсполненияТеста().Ожидание); ОписаниеТеста.Вставить("Статус", СтатусыИсполненияТеста().Ожидание);
ОписаниеТеста.Вставить("Ошибки", Новый Массив); ОписаниеТеста.Вставить("Ошибки", Новый Массив);
ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения); ОписаниеТеста.Вставить("НастройкиВыполнения", Тест.НастройкиВыполнения);
ОписаниеТеста.Вставить("Параметры", Тест.Параметры);
Возврат ОписаниеТеста; Возврат ОписаниеТеста;
@ -328,6 +349,7 @@
// * ВыполнятьМодульноеТестирование - Булево - Признак необходимости выполнения тестов // * ВыполнятьМодульноеТестирование - Булево - Признак необходимости выполнения тестов
// * reportPath - Строка - Файл или каталог сохранения отчета о тестировании // * reportPath - Строка - Файл или каталог сохранения отчета о тестировании
// * filter - Структура - Параметры отбора запускаемых тестов, см. ПараметрыФильтрации // * filter - Структура - Параметры отбора запускаемых тестов, см. ПараметрыФильтрации
// * settings - см. НастройкиВыполнения
// * closeAfterTests - Булево - Признак необходимости закрытия приложения по окончании прогона // * closeAfterTests - Булево - Признак необходимости закрытия приложения по окончании прогона
// * reportFormat - Строка - Формат отчета о тестировании. // * reportFormat - Строка - Формат отчета о тестировании.
// Модули реализующие различные форматы отчетов собраны в подсистеме ЮТФормированиеОтчета // Модули реализующие различные форматы отчетов собраны в подсистеме ЮТФормированиеОтчета
@ -340,6 +362,7 @@
Параметры.Вставить("reportPath", ""); Параметры.Вставить("reportPath", "");
Параметры.Вставить("closeAfterTests", Истина); Параметры.Вставить("closeAfterTests", Истина);
Параметры.Вставить("filter", ПараметрыФильтрации()); Параметры.Вставить("filter", ПараметрыФильтрации());
Параметры.Вставить("settings", НастройкиВыполнения());
Параметры.Вставить("reportFormat", "jUnit"); Параметры.Вставить("reportFormat", "jUnit");
Возврат Параметры; Возврат Параметры;
@ -390,19 +413,26 @@
// ОписаниеВозникшейОшибки // ОписаниеВозникшейОшибки
// Возвращает базовую структуру ошибки // Возвращает базовую структуру ошибки
//
// Параметры:
// Сообщение - Строка
//
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Описание возникшей ошибки: // Структура - Описание возникшей ошибки:
// * Сообщение - Строка - Описание возникшей ошибки // * Сообщение - Строка - Описание возникшей ошибки
// * Стек - Строка - Стек возникшей ошибки // * Стек - Строка - Стек возникшей ошибки
// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок // * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок
Функция ОписаниеВозникшейОшибки() Экспорт Функция ОписаниеВозникшейОшибки(Сообщение) Экспорт
Возврат Новый Структура("Сообщение, Стек, ТипОшибки", ""); Возврат Новый Структура("Сообщение, Стек, ТипОшибки", Сообщение);
КонецФункции КонецФункции
// ОписаниеОшибкиСравнения
// Возвращает базовую структуру ошибки проверки факта и ожидания // Возвращает базовую структуру ошибки проверки факта и ожидания
//
// Параметры:
// Сообщение - Строка
//
// Возвращаемое значение: // Возвращаемое значение:
// Структура - Описание возникшей ошибки: // Структура - Описание возникшей ошибки:
// * Сообщение - Строка - Описание возникшей ошибки // * Сообщение - Строка - Описание возникшей ошибки
@ -410,9 +440,9 @@
// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок // * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения см. ЮТФабрика.ТипыОшибок
// * ПроверяемоеЗначение - Произвольный - Проверяемое, фактическое значение // * ПроверяемоеЗначение - Произвольный - Проверяемое, фактическое значение
// * ОжидаемоеЗначение - Произвольный - Ожидаемое значение // * ОжидаемоеЗначение - Произвольный - Ожидаемое значение
Функция ОписаниеОшибкиСравнения() Экспорт Функция ОписаниеОшибкиСравнения(Сообщение) Экспорт
Описание = ОписаниеВозникшейОшибки(); Описание = ОписаниеВозникшейОшибки(Сообщение);
Описание.ТипОшибки = ТипыОшибок().Утверждений; Описание.ТипОшибки = ТипыОшибок().Утверждений;
Описание.Вставить("ПроверяемоеЗначение"); Описание.Вставить("ПроверяемоеЗначение");
Описание.Вставить("ОжидаемоеЗначение"); Описание.Вставить("ОжидаемоеЗначение");
@ -421,6 +451,26 @@
КонецФункции КонецФункции
// Возвращает базовую структуру ошибки пропуска теста
//
// Параметры:
// Сообщение - Строка
//
// Возвращаемое значение:
// Структура -- Описание возникшей ошибки::
// * Сообщение - Строка - Описание возникшей ошибки
// * Стек - Строка - Стек возникшей ошибки
// * ТипОшибки - Строка - Тип возникшей ошибки. Доступные значения
// См. ЮТФабрика.ТипыОшибок
Функция ОписаниеОшибкиПропуска(Сообщение) Экспорт
Описание = ОписаниеВозникшейОшибки(Сообщение);
Описание.ТипОшибки = ТипыОшибок().Пропущен;
Возврат Описание;
КонецФункции
// Описание события исполнения тестов. // Описание события исполнения тестов.
// //
// Параметры: // Параметры:
@ -546,9 +596,9 @@
// * suites - Неопределено, Массив из Строка - Список тестовых наборов // * suites - Неопределено, Массив из Строка - Список тестовых наборов
// * paths - Неопределено, Массив из Строка - Список путей до тестовых методов, путь может быть не полным. // * paths - Неопределено, Массив из Строка - Список путей до тестовых методов, путь может быть не полным.
// Например: // Например:
// - tests - Ищем тесты в расширении tests // + tests - Ищем тесты в расширении tests
// - tests.ОМ_ОбщегоНазначения - Ищем тесты в модуле ОМ_ОбщегоНазначения расширения tests // + tests.ОМ_ОбщегоНазначения - Ищем тесты в модуле ОМ_ОбщегоНазначения расширения tests
// - tests.ОМ_ОбщегоНазначения.ПолучитьЗначениеРеквизита - указание конкретного теста // + tests.ОМ_ОбщегоНазначения.ПолучитьЗначениеРеквизита - указание конкретного теста
// * tags - Неопределено, Массив из Строка - Список тэгов // * tags - Неопределено, Массив из Строка - Список тэгов
// * contexts - Неопределено, Массив из Строка - Список тестируемых контекстов // * contexts - Неопределено, Массив из Строка - Список тестируемых контекстов
// * tests - Неопределено, Массив из Строка - Список полных имен тестовых методов. ИмяМодуля.ИмяМетода{.Контекст} // * tests - Неопределено, Массив из Строка - Список полных имен тестовых методов. ИмяМодуля.ИмяМетода{.Контекст}
@ -567,4 +617,16 @@
КонецФункции КонецФункции
Функция НастройкиВыполнения()
ПараметрыИсполнения = ПараметрыИсполненияТеста();
Настройки = Новый Структура();
Настройки.Вставить(ПараметрыИсполнения.ВТранзакции, Ложь);
Возврат Настройки;
КонецФункции
#КонецОбласти #КонецОбласти

View File

@ -242,7 +242,7 @@
Фильтр.Вставить("ЕстьФильтрТестов", Фильтр.Тесты.Количество()); Фильтр.Вставить("ЕстьФильтрТестов", Фильтр.Тесты.Количество());
Фильтр.Вставить("ЕстьФильтрКонтекстов", ЗначениеЗаполнено(Фильтр.Контексты)); Фильтр.Вставить("ЕстьФильтрКонтекстов", ЗначениеЗаполнено(Фильтр.Контексты));
ЮТКонтекст.УстановитьКонтекстЧитателя(Новый Структура("Фильтр", Фильтр), Истина); ЮТКонтекст.УстановитьКонтекстЧитателя(Новый Структура("Фильтр", Фильтр));
КонецПроцедуры КонецПроцедуры

View File

@ -63,11 +63,10 @@
// ПрочитатьНаборТестов // ПрочитатьНаборТестов
// Читает набор тестов из модуля // Читает набор тестов из модуля
// Параметры: // Параметры:
// МетаданныеМодуля - См. ЮТФабрика.ОписаниеМодуля // ОписаниеМодуля - см. ЮТФабрика.ОписаниеМодуля
// СтроковыйРежим - Строка - Строковый режим (контекст) исполнения теста
// //
// Возвращаемое значение: // Возвращаемое значение:
// Неопределено, Структура - Если прочитано, то будет возвращено описание набора. См. ОписаниеНабораТестов // Неопределено, Массив из см. ЮТФабрика.ОписаниеТестовогоНабора- Если прочитано, то будет возвращено описание наборов
Функция ИсполняемыеСценарииМодуля(ОписаниеМодуля) Экспорт Функция ИсполняемыеСценарииМодуля(ОписаниеМодуля) Экспорт
ЭтоТестовыйМодуль = Истина; ЭтоТестовыйМодуль = Истина;
@ -91,8 +90,6 @@
КонецЕсли; КонецЕсли;
Данные = ЮТТесты.СценарииМодуля();
Если Ошибка <> Неопределено Тогда Если Ошибка <> Неопределено Тогда
Данные = Новый Массив(); // Фиксируем, чтобы отобразить в отчете Данные = Новый Массив(); // Фиксируем, чтобы отобразить в отчете
@ -103,10 +100,10 @@
ИначеЕсли ЭтоТестовыйМодуль Тогда ИначеЕсли ЭтоТестовыйМодуль Тогда
ЮТТесты.ПослеЧтенияСценариевМодуля();
Сценарии = ЮТТесты.СценарииМодуля(); Сценарии = ЮТТесты.СценарииМодуля();
Данные = ЮТОбщий.ВыгрузитьЗначения(Сценарии.ТестовыеНаборы, "Значение");
Данные = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Данные, ОписаниеМодуля); Данные = ЮТФильтрация.ОтфильтроватьТестовыеНаборы(Сценарии.ТестовыеНаборы, ОписаниеМодуля);
Иначе Иначе

View File

@ -0,0 +1,122 @@
//©///////////////////////////////////////////////////////////////////////////©//
//
// Copyright 2021-2022 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.
//
//©///////////////////////////////////////////////////////////////////////////©//
/////////////////////////////////////////////////////////////////////////////////
// Основной модуль для запуска тестирования
/////////////////////////////////////////////////////////////////////////////////
#Область ПрограммныйИнтерфейс
// Возвращает API формирования утверждения для проверки теста
//
// Параметры:
// ПроверяемоеЗначение - Произвольный - Проверяемое фактическое значение
// Сообщение - Строка - Описание проверки, которое будет выведено при возникновении ошибки
//
// Возвращаемое значение:
// ОбщийМодуль - Утверждения
Функция ОжидаетЧто(ПроверяемоеЗначение, Сообщение = "") Экспорт
Возврат ЮТУтверждения.Что(ПроверяемоеЗначение, Сообщение);
КонецФункции
// Пропустить выполнение теста
// Используется если тест выполняется в неподходящих условиях и не нужно его выполнять, но отразить в отчете требуется
// Параметры:
// Сообщение - Неопределено - Сообщение
Процедура Пропустить(Сообщение = Неопределено) Экспорт
ЮТРегистрацияОшибок.Пропустить(Сообщение);
КонецПроцедуры
// Возвращает API для работы с тестовыми данными
//
// Возвращаемое значение:
// ОбщийМодуль - Данные
Функция Данные() Экспорт
Возврат ЮТТестовыеДанные;
КонецФункции
// Конструктор вариантов прогона теста
// Используется для формирования набора различных параметров выполнения
// Параметры:
// Реквизиты - Строка - Список реквизитов варианта разделенных запятой
//
// Возвращаемое значение:
// ОбщийМодуль - Варианты
Функция Варианты(Реквизиты) Экспорт
Возврат ЮТКонструкторВариантов.Варианты(Реквизиты);
КонецФункции
Функция Контекст() Экспорт
Возврат ЮТКонтекстТеста;
КонецФункции
// КонтекстТеста
// Возвращает структуру, в которой можно хранить данные используемые в тесте
// Данные живут в рамках одного теста, но доступны в обработчиках событий `ПередКаждымТестом` и `ПослеКаждогоТеста`
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`
// Возвращаемое значение:
// Структура - Контекст теста
// Неопределено - Если метод вызывается за рамками теста
Функция КонтекстТеста() Экспорт
Возврат ЮТКонтекст.КонтекстТеста();
КонецФункции
// КонтекстНабора
// Возвращает структуру, в которой можно хранить данные используемые в тестах набора
// Данные живут в рамках одного набора тестов (данные между клиентом и сервером не синхронизируются)
// Доступны в каждом тесте набора и в обработчиках событий
// + `ПередТестовымНабором`
// + `ПослеТестовогоНабора`
// + `ПередКаждымТестом`
// + `ПослеКаждогоТеста`
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеКаждогоТеста`
// Возвращаемое значение:
// Структура - Контекст набора тестов
// Неопределено - Если метод вызывается за рамками тестового набора
Функция КонтекстТестовогоНабора() Экспорт
Возврат ЮТКонтекст.КонтекстНабора();
КонецФункции
// КонтекстМодуля
// Возвращает структуру, в которой можно хранить данные используемые в тестах модуля
// Данные живут в рамках одного тестового модуля (данные между клиентом и сервером не синхронизируются)
// Доступны в каждом тесте модуля и в обработчиках событий
// Например, в контекст можно помещать создаваемые данные, что бы освободить/удалить их в обработчике `ПослеВсехТестов`
// Возвращаемое значение:
// Структура - Контекст тестового модуля
// Неопределено - Если метод вызывается за рамками тестового модуля
Функция КонтекстМодуля() Экспорт
Возврат ЮТКонтекст.КонтекстМодуля();
КонецФункции
#КонецОбласти

View File

@ -1,10 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="34241a49-2c1e-41ac-b97b-f22be47c83e8"> <mdclass:CommonModule xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="00657e40-f22c-4638-ae35-a322d57470cc">
<name>ЮТ</name> <name>ЮТест</name>
<synonym> <synonym>
<key>ru</key> <key>ru</key>
<value>ЮТ</value> <value>Тест</value>
</synonym> </synonym>
<clientManagedApplication>true</clientManagedApplication> <clientManagedApplication>true</clientManagedApplication>
<server>true</server>
<clientOrdinaryApplication>true</clientOrdinaryApplication> <clientOrdinaryApplication>true</clientOrdinaryApplication>
</mdclass:CommonModule> </mdclass:CommonModule>

View File

@ -37,18 +37,20 @@
<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>
<commonModules>CommonModule.ОМ_ЮТУтверждения</commonModules> <commonModules>CommonModule.ОМ_ЮТУтверждения</commonModules>
<commonModules>CommonModule.ОМ_ЮТФильтрация</commonModules> <commonModules>CommonModule.ОМ_ЮТФильтрация</commonModules>
<commonModules>CommonModule.ОМ_ЮТЧитатель</commonModules> <commonModules>CommonModule.ОМ_ЮТЧитатель</commonModules>
<commonModules>CommonModule.РаботаСHTTP</commonModules> <commonModules>CommonModule.РаботаСHTTP</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>
<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>
<commonModules>CommonModule.ЮТОбщий</commonModules> <commonModules>CommonModule.ЮТОбщий</commonModules>
<commonModules>CommonModule.ЮТОбщийВызовСервера</commonModules> <commonModules>CommonModule.ЮТОбщийВызовСервера</commonModules>
@ -56,7 +58,6 @@
<commonModules>CommonModule.ЮТОтчетJSON</commonModules> <commonModules>CommonModule.ЮТОтчетJSON</commonModules>
<commonModules>CommonModule.ЮТОтчетJUnit</commonModules> <commonModules>CommonModule.ЮТОтчетJUnit</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> <commonModules>CommonModule.ЮТРегистрацияОшибок</commonModules>

View File

@ -16,8 +16,12 @@
// //
//©///////////////////////////////////////////////////////////////////////////©// //©///////////////////////////////////////////////////////////////////////////©//
#Область ОписаниеПеременных
Перем ЮТДанныеКонтекста Экспорт; Перем ЮТДанныеКонтекста Экспорт;
#КонецОбласти
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
// Обработчики событий модуля // Обработчики событий модуля
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -31,7 +35,7 @@
&После("ПриНачалеРаботыСистемы") &После("ПриНачалеРаботыСистемы")
Процедура ЮТПриНачалеРаботыСистемы() Процедура ЮТПриНачалеРаботыСистемы()
ЮТ.ВыполнитьМодульноеТестирование(); ЮТИсполнитель.ВыполнитьМодульноеТестирование();
КонецПроцедуры КонецПроцедуры

View File

@ -9,7 +9,6 @@
<content>CommonModule.МокитоОбучение</content> <content>CommonModule.МокитоОбучение</content>
<content>CommonModule.МокитоПроверки</content> <content>CommonModule.МокитоПроверки</content>
<content>CommonModule.МокитоСлужебный</content> <content>CommonModule.МокитоСлужебный</content>
<content>CommonModule.ЮТ</content>
<content>CommonModule.ЮТИсполнитель</content> <content>CommonModule.ЮТИсполнитель</content>
<content>CommonModule.ЮТИсполнительСервер</content> <content>CommonModule.ЮТИсполнительСервер</content>
<content>CommonModule.ЮТКонтекст</content> <content>CommonModule.ЮТКонтекст</content>
@ -21,7 +20,6 @@
<content>CommonModule.ЮТОтчетJSON</content> <content>CommonModule.ЮТОтчетJSON</content>
<content>CommonModule.ЮТОтчетJUnit</content> <content>CommonModule.ЮТОтчетJUnit</content>
<content>CommonModule.ЮТПараметры</content> <content>CommonModule.ЮТПараметры</content>
<content>CommonModule.ЮТПараметрыСервер</content>
<content>CommonModule.ЮТПовторногоИспользования</content> <content>CommonModule.ЮТПовторногоИспользования</content>
<content>CommonModule.ЮТРасширения</content> <content>CommonModule.ЮТРасширения</content>
<content>CommonModule.ЮТРегистрацияОшибок</content> <content>CommonModule.ЮТРегистрацияОшибок</content>
@ -36,4 +34,6 @@
<content>CommonModule.ЮТКонструкторВариантов</content> <content>CommonModule.ЮТКонструкторВариантов</content>
<content>CommonModule.ЮТОбщийВызовСервера</content> <content>CommonModule.ЮТОбщийВызовСервера</content>
<content>CommonModule.ЮТТестовыеДанныеВызовСервера</content> <content>CommonModule.ЮТТестовыеДанныеВызовСервера</content>
<content>CommonModule.ЮТест</content>
<content>CommonModule.ЮТКонтекстТеста</content>
</mdclass:Subsystem> </mdclass:Subsystem>