diff --git a/exts/yaxunit/src/CommonModules/ЮТКонтекст/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТКонтекст/Module.bsl
index 2cad9842..6611f55f 100644
--- a/exts/yaxunit/src/CommonModules/ЮТКонтекст/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТКонтекст/Module.bsl
@@ -236,6 +236,20 @@
КонецФункции
+// КонтекстОшибки
+// Возвращает служебный контекст, содержит дополнительные детали ошибки теста
+// Параметры:
+// ПолучитьССервера - Булево - Получить значение из серверного контекста
+//
+// Возвращаемое значение:
+// Неопределено, Массив из Строка- Детали ошибки
+Функция КонтекстДеталиОшибки(ПолучитьССервера = Ложь) Экспорт
+
+ //@skip-check constructor-function-return-section
+ Возврат ЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ПолучитьССервера);
+
+КонецФункции
+
Функция ОписаниеКонтекста() Экспорт
Описание = Новый Структура;
@@ -293,6 +307,12 @@
КонецПроцедуры
+Процедура УстановитьКонтекстДеталиОшибки(Знач ДанныеКонтекста) Экспорт
+
+ УстановитьЗначениеКонтекста(ИмяКонтекстаДеталиОшибки(), ДанныеКонтекста);
+
+КонецПроцедуры
+
Процедура УдалитьКонтекст() Экспорт
#Если Клиент Тогда
@@ -354,4 +374,10 @@
КонецФункции
+Функция ИмяКонтекстаДеталиОшибки()
+
+ Возврат "ДеталиОшибки";
+
+КонецФункции
+
#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТПараметрыЗапуска/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТПараметрыЗапуска/Module.bsl
index e42b7e5f..1c2fbb08 100644
--- a/exts/yaxunit/src/CommonModules/ЮТПараметрыЗапуска/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТПараметрыЗапуска/Module.bsl
@@ -137,8 +137,8 @@
Исключение
- Ошибка = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
- ВызватьИсключение СтрШаблон("Ошибка загрузки настроек из файла: '%1'", Ошибка);
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка загрузки настроек из файла");
+ ВызватьИсключение;
КонецПопытки;
diff --git a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
index d9a306ab..d7653116 100644
--- a/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТРегистрацияОшибок/Module.bsl
@@ -26,10 +26,11 @@
// ИмяСобытия - Строка
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
// Ошибка - ИнформацияОбОшибке
+// - Строка
Процедура ЗарегистрироватьОшибкуСобытияИсполнения(ИмяСобытия, ОписаниеСобытия, Ошибка) Экспорт
ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
- Пояснение = СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, Ошибка.Описание);
+ Пояснение = ЮТСообщенияСлужебный.СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка);
ДанныеОшибки = ДанныеОшибки(Ошибка, Пояснение, ТипОшибки);
Если ОписаниеСобытия.Тест <> Неопределено Тогда
@@ -70,7 +71,7 @@
ИначеЕсли ТипОшибки = ЮТФабрика.ТипыОшибок().Пропущен Тогда
ДанныеОшибки = ДанныеОшибкиПропуска(Ошибка);
Иначе
- ДанныеОшибки = ДанныеОшибки(Ошибка, Ошибка.Описание, ТипОшибки);
+ ДанныеОшибки = ДанныеОшибки(Ошибка, ЮТСообщенияСлужебный.КраткоеСообщениеОшибки(Ошибка), ТипОшибки);
КонецЕсли;
Тест.Ошибки.Добавить(ДанныеОшибки);
@@ -131,7 +132,7 @@
ОбъектПроверки = "проверяемое значение") Экспорт
УстановитьДанныеОшибкиСравнения(ПроверяемоеЗначение, ОжидаемоеЗначение);
- ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
+ ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
КонецПроцедуры
@@ -147,7 +148,7 @@
Процедура СгенерироватьОшибкуУтверждения(ОписаниеПроверки, Сообщение, ПроверяемоеЗначение, ОбъектПроверки = "проверяемое значение") Экспорт
УстановитьДанныеОшибкиУтверждения(ПроверяемоеЗначение);
- ТекстСообщения = ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
+ ТекстСообщения = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ОписаниеПроверки, Сообщение, ОбъектПроверки);
ВызватьОшибкуПроверки(ТекстСообщения, ОписаниеПроверки);
КонецПроцедуры
@@ -186,7 +187,7 @@
Процедура ЗарегистрироватьОшибкуИнициализацииДвижка(Ошибка, Описание) Экспорт
- Ошибка(Ошибка, Описание);
+ СообщитьОбОшибке(Ошибка, Описание);
КонецПроцедуры
@@ -324,42 +325,6 @@
КонецПроцедуры
-// Форматированный текст ошибки утверждения.
-//
-// Параметры:
-// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
-// ТекстОжидания - Строка - Описание ожидания
-// ОбъектПроверки - Строка - Объект проверки
-//
-// Возвращаемое значение:
-// Строка - Форматированный текст ошибки утверждения
-Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
-
- Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
- ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
- Иначе
- ВставкаСвойство = "";
- КонецЕсли;
-
- Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
- ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
- Иначе
- ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
- КонецЕсли;
-
- // Заголовок сообщения
- ТекстСообщения = "";
- // Тело сообщения
- ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
- ОбъектПроверки,
- ПредставлениеЗначения,
- ВставкаСвойство,
- ТекстОжидания);
-
- Возврат ТекстСообщения;
-
-КонецФункции
-
Функция ДобавитьОписания(ТекстОшибки, ОписаниеПроверки = Неопределено) Экспорт
Если ОписаниеПроверки <> Неопределено Тогда
@@ -399,18 +364,60 @@
КонецПроцедуры
+Процедура ДобавитьПояснениеОшибки(Пояснение) Экспорт
+
+ Детали = ЮТКонтекст.КонтекстДеталиОшибки();
+ Установить = Детали = Неопределено;
+
+ Если Установить Тогда
+ Детали = Новый Массив();
+ КонецЕсли;
+
+ Детали.Добавить(Пояснение);
+
+ Если Установить Тогда
+ ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Детали);
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#Область КонструкторыОписанийОшибки
-Функция ДанныеОшибки(Ошибка, Сообщение, ТипОшибки)
+Функция ДанныеОшибки(Ошибка, Знач Сообщение, ТипОшибки)
+
+#Если Сервер Тогда
+ Детали = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
+#Иначе
+ ДеталиСервер = ЮТКонтекст.КонтекстДеталиОшибки(Истина);
+ ДеталиКлиент = ЮТКонтекст.КонтекстДеталиОшибки();
+
+ Если ЗначениеЗаполнено(ДеталиКлиент) И ЗначениеЗаполнено(ДеталиСервер) Тогда
+ ЮТОбщий.ДополнитьМассив(ДеталиСервер, ДеталиКлиент);
+ Детали = ДеталиСервер;
+ ИначеЕсли ЗначениеЗаполнено(ДеталиКлиент) Тогда
+ Детали = ДеталиКлиент;
+ ИначеЕсли ЗначениеЗаполнено(ДеталиСервер) Тогда
+ Детали = ДеталиСервер;
+ Иначе
+ Детали = Неопределено;
+ КонецЕсли;
+#КонецЕсли
+
+ Если ЗначениеЗаполнено(Детали) Тогда
+ ЮТКонтекст.УстановитьКонтекстДеталиОшибки(Новый Массив());
+
+ Детали.Добавить(Сообщение);
+ Сообщение = СтрСоединить(Детали, Символы.ПС);
+ КонецЕсли;
ДанныеОшибки = ЮТФабрика.ОписаниеВозникшейОшибки(ТипОшибки + ": " + Сообщение);
Если Ошибка <> Неопределено Тогда
- ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
+ ДанныеОшибки.Стек = СтекОшибки(Ошибка);
КонецЕсли;
ДанныеОшибки.ТипОшибки = ТипОшибки;
ДобавитьСообщенияПользователю(ДанныеОшибки);
@@ -419,13 +426,23 @@
КонецФункции
+Функция СтекОшибки(Ошибка)
+
+ Если ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке") Тогда
+ Возврат ПодробноеПредставлениеОшибки(Ошибка);
+ Иначе
+ Возврат Неопределено;
+ КонецЕсли;
+
+КонецФункции
+
Функция ДанныеОшибкиУтверждений(Ошибка)
Описание = ИзвлечьТекстОшибки(Ошибка, ПрефиксОшибкиУтверждений());
ДанныеОшибки = ЮТФабрика.ОписаниеОшибкиСравнения(Описание);
- ДанныеОшибки.Стек = ПодробноеПредставлениеОшибки(Ошибка);
+ ДанныеОшибки.Стек = СтекОшибки(Ошибка);
ДобавитьСообщенияПользователю(ДанныеОшибки);
СтруктураОшибки = ЮТКонтекст.КонтекстОшибки();
@@ -472,10 +489,9 @@
КонецФункции
-Процедура Ошибка(Ошибка, Описание)
+Процедура СообщитьОбОшибке(Ошибка, Описание)
- ТекстОшибки = ПредставлениеОшибки(Описание, Ошибка);
- ЮТОбщий.СообщитьПользователю(ТекстОшибки);
+ ЮТОбщий.СообщитьПользователю(ПредставлениеОшибки(Описание, Ошибка));
КонецПроцедуры
diff --git a/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/Module.bsl
new file mode 100644
index 00000000..b8c62964
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/Module.bsl
@@ -0,0 +1,92 @@
+//©///////////////////////////////////////////////////////////////////////////©//
+//
+// Copyright 2021-2023 BIA-Technologies Limited Liability Company
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//©///////////////////////////////////////////////////////////////////////////©//
+
+#Область СлужебныйПрограммныйИнтерфейс
+
+// Форматированный текст ошибки утверждения.
+//
+// Параметры:
+// ОписаниеПроверки - см. ЮТФабрика.ОписаниеПроверки
+// ТекстОжидания - Строка - Описание ожидания
+// ОбъектПроверки - Строка - Объект проверки
+//
+// Возвращаемое значение:
+// Строка - Форматированный текст ошибки утверждения
+Функция ФорматированныйТекстОшибкиУтверждения(Знач ОписаниеПроверки, ТекстОжидания, ОбъектПроверки) Экспорт
+
+ Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.ИмяСвойства) Тогда
+ ВставкаСвойство = СтрШаблон(" содержит свойство `%1`, которое", ОписаниеПроверки.ОбъектПроверки.ИмяСвойства);
+ Иначе
+ ВставкаСвойство = "";
+ КонецЕсли;
+
+ Если ЗначениеЗаполнено(ОписаниеПроверки.ОбъектПроверки.Представление) Тогда
+ ПредставлениеЗначения = ОписаниеПроверки.ОбъектПроверки.Представление;
+ Иначе
+ ПредставлениеЗначения = СтрШаблон("`%1`", ОписаниеПроверки.ОбъектПроверки.Значение);
+ КонецЕсли;
+
+ // Заголовок сообщения
+ ТекстСообщения = "";
+ // Тело сообщения
+ ТекстСообщения = СтрШаблон("ожидали, что %1 %2%3 %4, но это не так.",
+ ОбъектПроверки,
+ ПредставлениеЗначения,
+ ВставкаСвойство,
+ ТекстОжидания);
+
+ Возврат ТекстСообщения;
+
+КонецФункции
+
+// Сообщение об ошибке события.
+//
+// Параметры:
+// ИмяСобытия - Строка
+// Ошибка - Строка - Текст ошибки
+// - ИнформацияОбОшибке - ошибка выполнения
+//
+// Возвращаемое значение:
+// Строка - Сообщение об ошибке события
+Функция СообщениеОбОшибкеСобытия(ИмяСобытия, Ошибка) Экспорт
+
+ ТипОшибки = ЮТФабрика.ТипыОшибок().ОшибкаОбработкиСобытия;
+ Возврат СтрШаблон("%1 '%2': %3", ТипОшибки, ИмяСобытия, КраткоеСообщениеОшибки(Ошибка));
+
+КонецФункции
+
+Функция КраткоеСообщениеОшибки(Ошибка) Экспорт
+
+ Если ЭтоИнформацияОбОшибке(Ошибка) Тогда
+ Возврат КраткоеПредставлениеОшибки(Ошибка);
+ Иначе
+ Возврат Ошибка;
+ КонецЕсли;
+
+КонецФункции
+
+#КонецОбласти
+
+#Область СлужебныеПроцедурыИФункции
+
+Функция ЭтоИнформацияОбОшибке(Ошибка) Экспорт
+
+ Возврат ТипЗнч(Ошибка) = Тип("ИнформацияОбОшибке");
+
+КонецФункции
+#КонецОбласти
diff --git a/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/ЮТСообщенияСлужебный.mdo b/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/ЮТСообщенияСлужебный.mdo
new file mode 100644
index 00000000..bbc9121d
--- /dev/null
+++ b/exts/yaxunit/src/CommonModules/ЮТСообщенияСлужебный/ЮТСообщенияСлужебный.mdo
@@ -0,0 +1,11 @@
+
+
+ ЮТСообщенияСлужебный
+
+ ru
+ Сообщения служебный
+
+ true
+ true
+ true
+
diff --git a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
index 07955cc3..959e6e32 100644
--- a/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТСравнениеКлиентСервер/Module.bsl
@@ -437,7 +437,9 @@
Попытка
Результат = РегулярныеВыражения.Совпадает(ПроверяемаяСтрока, РегулярноеВыражение);
Исключение
- ВызватьИсключение РегулярныеВыражения.ОписаниеОшибки;
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки("Ошибка проверки строки по шаблону " + РегулярноеВыражение);
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(РегулярныеВыражения.ОписаниеОшибки);
+ ВызватьИсключение;
КонецПопытки;
Возврат Результат;
@@ -636,7 +638,7 @@
ШаблонСообщения = ЮТПредикатыКлиентСервер.ШаблонВыражения(ПараметрыПроверки.ВидСравнения);
Сообщение = СтрШаблон(ШаблонСообщения, ПараметрыПроверки.ОжидаемоеЗначение);
- ТекстОшибки = ЮТРегистрацияОшибок.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
+ ТекстОшибки = ЮТСообщенияСлужебный.ФорматированныйТекстОшибкиУтверждения(ПараметрыПроверки, Сообщение, ПараметрыПроверки.ТекстПроверяемоеЗначение);
ТекстОшибки = ЮТРегистрацияОшибок.ДобавитьОписания(ТекстОшибки, ПараметрыПроверки);
ЮТРегистрацияОшибок.ДобавитьОшибкуСравненияКРезультатуПроверки(РезультатПроверки,
diff --git a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
index 98e410ae..afb9c541 100644
--- a/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТТестовыеДанныеВызовСервера/Module.bsl
@@ -292,9 +292,8 @@
Исключение
- Сообщение = СтрШаблон("Не удалось записать объект `%1` (%2)
- |%3", Объект, ТипЗнч(Объект), ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
- ВызватьИсключение Сообщение;
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось записать объект `%1` (%2)", Объект, ТипЗнч(Объект)));
+ ВызватьИсключение;
КонецПопытки;
diff --git a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
index 4b5cde52..799592d0 100644
--- a/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
+++ b/exts/yaxunit/src/CommonModules/ЮТТипыДанныхСлужебный/Module.bsl
@@ -48,8 +48,8 @@
СериализаторXDTO.ЗаписатьJSON(Запись, Тип);
Возврат Запись.Закрыть();
Исключение
- ВызватьИсключение СтрШаблон("Не удалось определить индетификатор типа для `%1`
- |%2", Тип, ОписаниеОшибки());
+ ЮТРегистрацияОшибок.ДобавитьПояснениеОшибки(СтрШаблон("Не удалось определить идетификатор типа для `%1`", Тип));
+ ВызватьИсключение;
КонецПопытки;
#КонецЕсли
diff --git a/exts/yaxunit/src/Configuration/Configuration.mdo b/exts/yaxunit/src/Configuration/Configuration.mdo
index d46ee925..e6deb45e 100644
--- a/exts/yaxunit/src/Configuration/Configuration.mdo
+++ b/exts/yaxunit/src/Configuration/Configuration.mdo
@@ -94,6 +94,7 @@
CommonModule.ЮТРасширения
CommonModule.ЮТРегистрацияОшибок
CommonModule.ЮТСобытия
+ CommonModule.ЮТСообщенияСлужебный
CommonModule.ЮТСравнениеКлиентСервер
CommonModule.ЮТСравнениеСервер
CommonModule.ЮТСтроки