mirror of
https://github.com/bia-technologies/yaxunit.git
synced 2025-01-23 18:54:40 +02:00
Merge pull request #2 from bia-technologies/develop
Update from original
This commit is contained in:
commit
246588634b
16
.github/workflows/main-build.yml
vendored
16
.github/workflows/main-build.yml
vendored
@ -2,13 +2,18 @@ name: Build and test
|
||||
on:
|
||||
push:
|
||||
branches: [ feature/**, develop ]
|
||||
pull_request:
|
||||
pull_request_target:
|
||||
branches: [ develop ]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
checks: write
|
||||
id-token: write
|
||||
|
||||
jobs:
|
||||
build_artifacts:
|
||||
name: Build artifacts
|
||||
@ -20,7 +25,7 @@ jobs:
|
||||
secrets: inherit
|
||||
|
||||
tests_linux_ru:
|
||||
name: Test on Linux 8.3.21.1895 ru_RU
|
||||
name: Tests Linux 8.3.21.1895 ru_RU
|
||||
uses: ./.github/workflows/run-tests-linux.yml
|
||||
needs: build_artifacts
|
||||
with:
|
||||
@ -29,8 +34,9 @@ jobs:
|
||||
secrets: inherit
|
||||
|
||||
tests_linux_en:
|
||||
name: Test on Linux 8.3.21.1895 en_US
|
||||
name: Tests Linux 8.3.21.1895 en_US
|
||||
uses: ./.github/workflows/run-tests-linux.yml
|
||||
if: false
|
||||
needs: build_artifacts
|
||||
with:
|
||||
v8_version: 8.3.21.1895
|
||||
@ -40,7 +46,7 @@ jobs:
|
||||
secrets: inherit
|
||||
|
||||
tests_windows_ru:
|
||||
name: Test on Windows 8.3.21.1895 ru_RU
|
||||
name: Tests Windows 8.3.21.1895 ru_RU
|
||||
uses: ./.github/workflows/run-tests-windows.yml
|
||||
needs: build_artifacts
|
||||
with:
|
||||
@ -49,7 +55,7 @@ jobs:
|
||||
secrets: inherit
|
||||
|
||||
tests_macos_ru:
|
||||
name: Test on MacOS 8.3.21.1895 ru_RU
|
||||
name: Tests MacOS 8.3.21.1895 ru_RU
|
||||
uses: ./.github/workflows/run-tests-macos.yml
|
||||
needs: build_artifacts
|
||||
with:
|
||||
|
11
.github/workflows/run-tests-linux.yml
vendored
11
.github/workflows/run-tests-linux.yml
vendored
@ -139,7 +139,7 @@ jobs:
|
||||
}
|
||||
|
||||
- name: run tests
|
||||
run: 1cv8c /WS "http://localhost:8314" /C"RunUnitTests=${{github.workspace}}/unit.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out output.log
|
||||
run: 1cv8c /WS "http://localhost:8314" /C"RunUnitTests=${{github.workspace}}/unit.json" /DisableStartupDialogs /DisableStartupMessages /DisableUnrecoverableErrorMessage /Out ${{github.workspace}}/output.log
|
||||
timeout-minutes: 5
|
||||
env:
|
||||
DISPLAY: :99
|
||||
@ -147,20 +147,21 @@ jobs:
|
||||
|
||||
- name: view output
|
||||
if: always()
|
||||
run: cat output.log
|
||||
run: cat ./output.log
|
||||
|
||||
- name: upload-artifact
|
||||
uses: actions/upload-artifact@v3
|
||||
if: always()
|
||||
with:
|
||||
name: report-linux-${{ inputs.v8_version }}-${{ inputs.locale }}
|
||||
name: Tests report. Linux ${{ inputs.v8_version }} ${{ inputs.locale }}
|
||||
path: reports/*.*
|
||||
|
||||
- name: Publish Test Report
|
||||
uses: mikepenz/action-junit-report@v3
|
||||
if: always()
|
||||
with:
|
||||
job_name: Tests Linux ${{ inputs.v8_version }} ${{ inputs.locale }}
|
||||
check_name: Tests report. Linux ${{ inputs.v8_version }} ${{ inputs.locale }}
|
||||
report_paths: reports/report.xml
|
||||
fail_on_failure: ${{ inputs.fail_on_failure }}
|
||||
require_passed_tests: ${{ inputs.fail_on_failure }}
|
||||
update_check: true
|
||||
require_passed_tests: true
|
5
.github/workflows/sq.yml
vendored
5
.github/workflows/sq.yml
vendored
@ -43,7 +43,8 @@ jobs:
|
||||
-Dsonar.host.url=https://sonar.openbsl.ru
|
||||
-Dsonar.branch.name=${{ env.BRANCH_NAME }}
|
||||
-Dsonar.projectVersion=${{ steps.extract_version.outputs.version }}
|
||||
|
||||
-Dsonar.qualitygate.wait=true
|
||||
-Dsonar.qualitygate.timeout=300
|
||||
# Анализ проекта в SonarQube (PR)
|
||||
# https://docs.sonarqube.org/latest/analysis/pull-request/
|
||||
- name: Анализ в SonarQube (pull-request)
|
||||
@ -57,3 +58,5 @@ jobs:
|
||||
-Dsonar.pullrequest.branch=${{ github.event.pull_request.head.ref }}
|
||||
-Dsonar.pullrequest.base=${{ github.event.pull_request.base.ref }}
|
||||
-Dsonar.scm.revision=${{ github.event.pull_request.head.sha }}
|
||||
-Dsonar.qualitygate.wait=true
|
||||
-Dsonar.qualitygate.timeout=300
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 116 KiB |
BIN
documentation/docs/images/ui-run-menu.png
Normal file
BIN
documentation/docs/images/ui-run-menu.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
documentation/docs/images/ui-run-tests.png
Normal file
BIN
documentation/docs/images/ui-run-tests.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 125 KiB |
@ -31,7 +31,8 @@
|
||||
| Имя параметра | Тип | Значение по умолчанию | Описание |
|
||||
|---------------|-----------|-----------------------|-----------------------------------------------------------------------------------------------------------------------------|
|
||||
| `file` | `String` | `""` | Путь к файлу лога |
|
||||
| `enable` | `Boolean` | `Null` | Признак использования логирования. Если не указан, зависит от параметра `file`, если он указан - вкл, если не указан - выкл |
|
||||
| `enable` | `Boolean` | `Null` | Использование логирвания.<br/>Если не указан, зависит от параметра `file` и `console`, если установлены - вкл, если нет - выкл |
|
||||
| `console` | `Boolean` | `false` | Вывод лога в stdout (консоль) |
|
||||
| `level` | `String` | `"debug"` | Уровень детализации лога. Возможные значения: `"debug"`, `"info"`, `"error"` |
|
||||
|
||||
Примеры:
|
||||
|
@ -20,10 +20,18 @@
|
||||
![Конфигуратор](images/from-configurator.png)
|
||||
* Воспользоваться [интерфейсом настройки](../yaxunit-ui.md#интерфейс-настройки-конфигурации)
|
||||
|
||||
## Запуск из предприятия
|
||||
|
||||
Для запуска тестов из предприятия необходимо воспользоваться командой [Запуск тестирования](../yaxunit-ui.md#запуск-тестов)
|
||||
|
||||
![Запуск тестов](../images/ui-run-tests.png)
|
||||
|
||||
## Строка запуска предприятия
|
||||
|
||||
`[путь к клиенту 1С] ENTERPRISE [Параметры подключения к ИБ] [Параметры авторизации] /C RunUnitTests=/путь/к/конфигурационному/файлу`
|
||||
|
||||
Для формирования строки запуска можно воспользоваться [интерфейсом настройки](../yaxunit-ui.md#интерфейс-настройки-конфигурации)
|
||||
|
||||
Пример:
|
||||
|
||||
`"C:\Program Files\1cv8\8.3.18.1698\bin\1cv8c.exe" ENTERPRISE /IBName MyInfoBase /N Admin /C RunUnitTests=C:\tmp\test-config.json`
|
||||
|
@ -1,28 +1,25 @@
|
||||
# Графический интерфейс
|
||||
|
||||
Расширение добавляет в командный интерфейс конфигурации новый раздел "Юнит тест".
|
||||
|
||||
Из него вы можете интерактивно запускать тесты или сформировать файл конфигурации запуска.
|
||||
|
||||
## Запуск тестов
|
||||
|
||||
Для запуска и отладки тестов вы можете воспользоваться командой "Запуск тестов"
|
||||
|
||||
Будут автоматически загружены все тесты и выведены в виде дерева сгруппированного по тестовым наборам (модулям).
|
||||
|
||||
![Запуск тестов](images/ui-run-tests.png)
|
||||
|
||||
Из этой формы вы можете запустить нужные тесты.
|
||||
|
||||
![Меню запуска](images/ui-run-menu.png)
|
||||
|
||||
И сразу же увидеть результат прогона.
|
||||
|
||||
## Интерфейс отчета
|
||||
|
||||
Для просмотра результатов тестирования в режиме 1С:Предприятие, вам необходимо в параметрах запуска указать [настройку](run) `showReport`
|
||||
Например, создав файла настроек
|
||||
|
||||
```json
|
||||
{
|
||||
"reportPath": "/tmp/settings/",
|
||||
"filter": {
|
||||
"extensions": [
|
||||
"tests"
|
||||
]
|
||||
},
|
||||
"settings": {
|
||||
"ВТранзакции": false
|
||||
},
|
||||
"reportFormat": "jUnit",
|
||||
"showReport": true
|
||||
}
|
||||
```
|
||||
|
||||
Мы получим примерно такой результат
|
||||
|
||||
![Отчет](images/report-ui.png)
|
||||
|
||||
## Интерфейс настройки конфигурации
|
||||
|
@ -26,6 +26,7 @@
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьПараметры");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикАнализПараметровЗапуска");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикПодключитьКомпоненты");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикИнициализация");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьТесты");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикСохранитьОтчет");
|
||||
@ -36,6 +37,20 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВыполнитьМодульноеТестированиеПоНастройке(ПараметрыЗапуска, ОбработчикЗавершения) Экспорт
|
||||
|
||||
ПараметрыИсполнения = ПараметрыИсполнения();
|
||||
ПараметрыИсполнения.ПараметрыЗапуска = ПараметрыЗапуска;
|
||||
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикИнициализация");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикЗагрузитьТесты");
|
||||
ДобавитьОбработчикЦепочки(ПараметрыИсполнения, "ОбработчикВыполнитьТестирование");
|
||||
ПараметрыИсполнения.Цепочка.Добавить(ОбработчикЗавершения);
|
||||
|
||||
ВызватьСледующийОбработчик(ПараметрыИсполнения);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ВызватьОбработчик(Обработчик, Результат = Неопределено) Экспорт
|
||||
|
||||
Если Обработчик <> Неопределено Тогда
|
||||
@ -44,6 +59,70 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПараметрыИсполнения() Экспорт
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры.Вставить("АргументыЗапуска");
|
||||
Параметры.Вставить("ПараметрыЗапуска");
|
||||
Параметры.Вставить("Цепочка", Новый Массив());
|
||||
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
|
||||
Параметры.Вставить("ИсполняемыеТестовыеМодули");
|
||||
Параметры.Вставить("РезультатыТестирования");
|
||||
|
||||
Возврат Параметры;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ВыполнитьТестыМодуля(ТестовыйМодуль) Экспорт
|
||||
|
||||
Результаты = Новый Массив();
|
||||
|
||||
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
|
||||
|
||||
КлиентскиеНаборы = Новый Массив();
|
||||
СерверныеНаборы = Новый Массив();
|
||||
ПропущенныеНаборы = Новый Массив();
|
||||
|
||||
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
Если НЕ Набор.Выполнять Тогда
|
||||
ПропущенныеНаборы.Добавить(Набор);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
РежимИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
|
||||
|
||||
Если РежимИсполнения = КонтекстыИсполнения.Клиент Тогда
|
||||
КлиентскиеНаборы.Добавить(Набор);
|
||||
ИначеЕсли РежимИсполнения = КонтекстыИсполнения.Сервер Тогда
|
||||
СерверныеНаборы.Добавить(Набор);
|
||||
Иначе
|
||||
ПропущенныеНаборы.Добавить(Набор);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТестовыйМодульОблегченный = ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль);
|
||||
ТестовыйМодульОблегченный.НаборыТестов = Новый Массив();
|
||||
|
||||
Если ЗначениеЗаполнено(КлиентскиеНаборы) Тогда
|
||||
Результаты = ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(КлиентскиеНаборы, ТестовыйМодульОблегченный);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЗначениеЗаполнено(СерверныеНаборы) Тогда
|
||||
Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(СерверныеНаборы, ТестовыйМодульОблегченный);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
ЮТОбщий.ДополнитьМассив(Результаты, Результат);
|
||||
КонецЕсли;
|
||||
|
||||
ЮТОбщий.ДополнитьМассив(Результаты, ПропущенныеНаборы);
|
||||
|
||||
ТестовыйМодульОблегченный.НаборыТестов = Результаты;
|
||||
|
||||
Возврат ТестовыйМодульОблегченный;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@ -75,56 +154,52 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработчикЗагрузитьТесты(Результат, ДополнительныеПараметры) Экспорт
|
||||
Процедура ОбработчикИнициализация(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Параметры = ДополнительныеПараметры.ПараметрыЗапуска;
|
||||
|
||||
ЮТКонтекст.ИнициализироватьКонтекст();
|
||||
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
|
||||
ЮТСобытия.Инициализация(Параметры);
|
||||
// Повторно сохраним для передачи на сервер
|
||||
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
|
||||
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
|
||||
|
||||
ЮТСобытия.ПередЧтениеСценариев();
|
||||
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(Параметры);
|
||||
ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули);
|
||||
|
||||
КоллекцияКатегорийНаборов = Новый Массив();
|
||||
|
||||
Для Каждого ТестовыйМодуль Из ТестовыеМодули Цикл
|
||||
КатегорииНаборов = КатегорииНаборовТестовМодуля(ТестовыйМодуль);
|
||||
КоллекцияКатегорийНаборов.Добавить(КатегорииНаборов);
|
||||
КонецЦикла;
|
||||
|
||||
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов);
|
||||
ДополнительныеПараметры.КоллекцияКатегорийНаборов = КоллекцияКатегорийНаборов;
|
||||
ЮТСобытия.Инициализация(ДополнительныеПараметры.ПараметрыЗапуска);
|
||||
|
||||
ВызватьСледующийОбработчик(ДополнительныеПараметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработчикЗагрузитьТесты(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
ЮТСобытия.ПередЧтениеСценариев();
|
||||
|
||||
ТестовыеМодули = ЮТЧитатель.ЗагрузитьТесты(ДополнительныеПараметры.ПараметрыЗапуска);
|
||||
ЮТСобытия.ПослеЧтенияСценариев(ТестовыеМодули);
|
||||
|
||||
ИсполняемыеТестовыеМодули = Новый Массив();
|
||||
|
||||
Для Каждого ТестовыйМодуль Из ТестовыеМодули Цикл
|
||||
ИсполняемыйТестовыйМодуль = ИсполняемыйТестовыйМодуль(ТестовыйМодуль);
|
||||
ИсполняемыеТестовыеМодули.Добавить(ИсполняемыйТестовыйМодуль);
|
||||
КонецЦикла;
|
||||
|
||||
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули);
|
||||
ДополнительныеПараметры.ИсполняемыеТестовыеМодули = ИсполняемыеТестовыеМодули;
|
||||
|
||||
ВызватьСледующийОбработчик(ДополнительныеПараметры, ИсполняемыеТестовыеМодули);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ОбработчикВыполнитьТестирование(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
РезультатыТестирования = Новый Массив();
|
||||
КоллекцияКатегорийНаборов = ДополнительныеПараметры.КоллекцияКатегорийНаборов;
|
||||
ЮТСобытия.ПередВыполнениемТестов(ДополнительныеПараметры.ИсполняемыеТестовыеМодули);
|
||||
|
||||
Для Каждого КатегорииНаборов Из КоллекцияКатегорийНаборов Цикл
|
||||
РезультатыТестирования = Новый Массив();
|
||||
|
||||
Для Каждого ТестовыйМодуль Из ДополнительныеПараметры.ИсполняемыеТестовыеМодули Цикл
|
||||
|
||||
Результат = ЮТИсполнительКлиентСервер.ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Клиентские, КатегорииНаборов.ТестовыйМодуль);
|
||||
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
|
||||
|
||||
Результат = ЮТИсполнительСервер.ВыполнитьГруппуНаборовТестов(КатегорииНаборов.Серверные, КатегорииНаборов.ТестовыйМодуль);
|
||||
ЮТЛогирование.ВывестиСерверныеСообщения();
|
||||
|
||||
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, Результат);
|
||||
|
||||
ЮТОбщий.ДополнитьМассив(РезультатыТестирования, КатегорииНаборов.Пропущенные);
|
||||
РезультатыПрогонаМодуля = ВыполнитьТестыМодуля(ТестовыйМодуль);
|
||||
РезультатыТестирования.Добавить(РезультатыПрогонаМодуля);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЮТСобытия.ПослеВыполненияТестов(РезультатыТестирования);
|
||||
|
||||
ДополнительныеПараметры.РезультатыТестирования = РезультатыТестирования;
|
||||
ВызватьСледующийОбработчик(ДополнительныеПараметры);
|
||||
ВызватьСледующийОбработчик(ДополнительныеПараметры, РезультатыТестирования);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -168,6 +243,25 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
Процедура Инициализация(Параметры) Экспорт
|
||||
|
||||
ЮТКонтекст.ИнициализироватьКонтекст();
|
||||
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(Параметры.settings);
|
||||
// Повторно сохраним для передачи на сервер
|
||||
ЮТКонтекст.УстановитьГлобальныеНастройкиВыполнения(ЮТКонтекст.ГлобальныеНастройкиВыполнения());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт
|
||||
|
||||
ЮТКонтекст.УстановитьКонтекстИсполнения(ЮТФабрика.НовыйКонтекстИсполнения());
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
Процедура ВызватьСледующийОбработчик(ПараметрыИсполнения, Результат = Неопределено)
|
||||
|
||||
Обработчик = СледующийОбработчик(ПараметрыИсполнения);
|
||||
@ -178,6 +272,10 @@
|
||||
|
||||
Функция СледующийОбработчик(ПараметрыИсполнения)
|
||||
|
||||
Если ТипЗнч(ПараметрыИсполнения) = Тип("ОписаниеОповещения") Тогда
|
||||
Возврат ПараметрыИсполнения;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыИсполнения.ИндексСледующегоОбработчика = ПараметрыИсполнения.ИндексСледующегоОбработчика + 1;
|
||||
Обработчик = ПараметрыИсполнения.Цепочка[ПараметрыИсполнения.ИндексСледующегоОбработчика];
|
||||
ЮТЛогирование.Отладка("Следующий обработчик исполнителя: " + Обработчик.ИмяПроцедуры);
|
||||
@ -193,25 +291,46 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ПараметрыИсполнения()
|
||||
Функция ИсполняемыйТестовыйМодуль(ТестовыйМодуль)
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры.Вставить("АргументыЗапуска");
|
||||
Параметры.Вставить("ПараметрыЗапуска");
|
||||
Параметры.Вставить("Цепочка", Новый Массив());
|
||||
Параметры.Вставить("ИндексСледующегоОбработчика", -1);
|
||||
Параметры.Вставить("КоллекцияКатегорийНаборов");
|
||||
Параметры.Вставить("РезультатыТестирования");
|
||||
ИсполняемыйТестовыйМодуль = ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль);
|
||||
|
||||
Возврат Параметры;
|
||||
КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения();
|
||||
КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля);
|
||||
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
|
||||
|
||||
ИсполняемыйТестовыйМодуль.НаборыТестов = ИсполняемыеНаборыМодуля(ТестовыйМодуль);
|
||||
|
||||
Для Каждого Набор Из ИсполняемыйТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
|
||||
|
||||
ОшибкаКонтекста = Неопределено;
|
||||
Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Неподдерживаемый режим запуска";
|
||||
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
|
||||
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
|
||||
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаКонтекста <> Неопределено Тогда
|
||||
Набор.Выполнять = Ложь;
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста);
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат ИсполняемыйТестовыйМодуль;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция КатегорииНаборовТестовМодуля(ТестовыйМодуль)
|
||||
Функция ИсполняемыеНаборыМодуля(ТестовыйМодуль)
|
||||
|
||||
КатегорииНаборов = ЮТФабрика.ОписаниеКатегорияНабораТестов(ТестовыйМодуль);
|
||||
|
||||
ИсполняемыеТестовыеНаборы = Новый Массив;
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого ТестовыйНабор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
@ -241,68 +360,21 @@
|
||||
Если НаборыКонтекстов.Количество() Тогда
|
||||
|
||||
Для Каждого Элемент Из НаборыКонтекстов Цикл
|
||||
ИсполняемыеТестовыеНаборы.Добавить(Элемент.Значение);
|
||||
Результат.Добавить(Элемент.Значение);
|
||||
КонецЦикла;
|
||||
|
||||
Иначе
|
||||
|
||||
// TODO. Корякин А. 2021.11.24 А надо ли добавлять при отсутствии тестов
|
||||
ИсполняемыеТестовыеНаборы.Добавить(ЮТФабрика.ОписаниеИсполняемогоНабораТестов(ТестовыйНабор, ТестовыйМодуль));
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонтекстыПриложения = ЮТФабрика.КонтекстыПриложения();
|
||||
КонтекстыМодуля = ЮТФабрика.КонтекстыМодуля(ТестовыйМодуль.МетаданныеМодуля);
|
||||
КонтекстыИсполнения = ЮТФабрика.КонтекстыИсполнения();
|
||||
|
||||
Для Каждого Набор Из ИсполняемыеТестовыеНаборы Цикл
|
||||
|
||||
КонтекстИсполнения = ЮТФабрика.КонтекстИсполнения(Набор.Режим);
|
||||
|
||||
ОшибкаКонтекста = Неопределено;
|
||||
Если КонтекстыПриложения.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Неподдерживаемый режим запуска";
|
||||
ИначеЕсли КонтекстыМодуля.Найти(Набор.Режим) = Неопределено Тогда
|
||||
ОшибкаКонтекста = "Модуль не доступен в этом контексте";
|
||||
ИначеЕсли КонтекстИсполнения <> КонтекстыИсполнения.Сервер И КонтекстИсполнения <> КонтекстыИсполнения.Клиент Тогда
|
||||
ОшибкаКонтекста = "Неизвестный контекст/режим исполнения";
|
||||
КонецЕсли;
|
||||
|
||||
Если ОшибкаКонтекста <> Неопределено Тогда
|
||||
Набор.Выполнять = Ложь;
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Набор, ОшибкаКонтекста);
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
ЮТРегистрацияОшибок.ЗарегистрироватьОшибкуРежимаВыполнения(Тест, ОшибкаКонтекста);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
|
||||
Если НЕ Набор.Выполнять Тогда
|
||||
КатегорииНаборов.Пропущенные.Добавить(Набор);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Если КонтекстИсполнения = КонтекстыИсполнения.Сервер Тогда
|
||||
|
||||
КатегорииНаборов.Серверные.Добавить(Набор);
|
||||
|
||||
ИначеЕсли КонтекстИсполнения = КонтекстыИсполнения.Клиент Тогда
|
||||
|
||||
КатегорииНаборов.Клиентские.Добавить(Набор);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат КатегорииНаборов;
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ПоказатьОтчет(РезультатыТестирования, Параметры)
|
||||
|
||||
Данные = Новый Структура("РезультатыТестирования, ПараметрыЗапуска", РезультатыТестирования, Параметры);
|
||||
АдресДанных = ПоместитьВоВременноеХранилище(Данные);
|
||||
АдресДанных = ПоместитьВоВременноеХранилище(Данные, Новый УникальныйИдентификатор());
|
||||
|
||||
ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.Основная", Новый Структура("АдресХранилища", АдресДанных));
|
||||
|
||||
@ -311,7 +383,7 @@
|
||||
// Записать код возврата.
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатыТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// РезультатыТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
// Параметры - см. ЮТФабрика.ПараметрыЗапуска
|
||||
Процедура ЗаписатьКодВозврата(РезультатыТестирования, Параметры)
|
||||
|
||||
@ -321,20 +393,28 @@
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Набор Из РезультатыТестирования Цикл
|
||||
Для Каждого Модуль Из РезультатыТестирования Цикл
|
||||
|
||||
Если ЗначениеЗаполнено(Набор.Ошибки) Тогда
|
||||
Успешно = Ложь;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
Для Каждого Набор Из Модуль.НаборыТестов Цикл
|
||||
|
||||
Если ЗначениеЗаполнено(Тест.Ошибки) Тогда
|
||||
Если ЗначениеЗаполнено(Набор.Ошибки) Тогда
|
||||
Успешно = Ложь;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
Если ЗначениеЗаполнено(Тест.Ошибки) Тогда
|
||||
Успешно = Ложь;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НЕ Успешно Тогда
|
||||
@ -353,4 +433,20 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НаборыТестовРежима(ТестовыйМодуль, ОжидаемыйРежимИсполнения)
|
||||
|
||||
Результат = Новый Массив();
|
||||
|
||||
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
Если Набор.Выполнять И ЮТФабрика.КонтекстИсполнения(Набор.Режим) = ОжидаемыйРежимИсполнения Тогда
|
||||
Результат.Добавить(Набор);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -21,7 +21,7 @@
|
||||
// Выполняет тесты группы наборов, соответствующих одному режиму выполнения (клиент/сервер)
|
||||
// Параметры:
|
||||
// Наборы - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Наборы тестов модуля
|
||||
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеТестовогоМодуля
|
||||
// ТестовыйМодуль - см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов - Результат прогона наборов тестов с заполненной информацией о выполнении
|
||||
|
@ -120,6 +120,7 @@
|
||||
|
||||
Разделитель = "------------------------------------------------------";
|
||||
ЗаписатьСообщения(ДанныеКонтекста, ЮТОбщий.ЗначениеВМассиве(Разделитель), Ложь);
|
||||
|
||||
Информация("Старт");
|
||||
|
||||
КонецПроцедуры
|
||||
@ -164,19 +165,19 @@
|
||||
|
||||
// Обработка события "ПослеФормированияИсполняемыхНаборовТестов"
|
||||
// Параметры:
|
||||
// КоллекцияКатегорийНаборов - Массив из см. ЮТФабрика.ОписаниеКатегорияНабораТестов - Набор исполняемых наборов
|
||||
Процедура ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов) Экспорт
|
||||
// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов
|
||||
Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт
|
||||
|
||||
Количество = 0;
|
||||
|
||||
Для Каждого Наборы Из КоллекцияКатегорийНаборов Цикл
|
||||
Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл
|
||||
|
||||
Для Каждого Набор Из Наборы.Клиентские Цикл
|
||||
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого Набор Из Наборы.Серверные Цикл
|
||||
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
|
||||
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
Если Набор.Выполнять Тогда
|
||||
ЮТОбщий.Инкремент(Количество, Набор.Тесты.Количество());
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
@ -230,6 +231,10 @@
|
||||
Процедура ПослеКаждогоТеста(ОписаниеСобытия) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
Если НЕ ЛогированиеВключено(Контекст) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ЮТОбщий.Инкремент(Контекст.КоличествоВыполненныхТестов);
|
||||
Информация(СтрШаблон("%1 Завершен тест `%2`", Прогресс(), ОписаниеСобытия.Тест.Имя));
|
||||
|
||||
@ -251,9 +256,12 @@
|
||||
// ОписаниеСобытия - см. ЮТФабрика.ОписаниеСобытияИсполненияТестов
|
||||
Процедура ПослеВсехТестов(ОписаниеСобытия) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
Если НЕ ЛогированиеВключено(Контекст) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
#Если Клиент Тогда
|
||||
Прогресс = Контекст().КоличествоВыполненныхТестов;
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Прогресс, Истина);
|
||||
ЮТКонтекст.УстановитьЗначениеКонтекста(ИмяКонтекстаЛогирования() + ".КоличествоВыполненныхТестов", Контекст.КоличествоВыполненныхТестов, Истина);
|
||||
#КонецЕсли
|
||||
|
||||
Информация(СтрШаблон("Завершен модуль `%1`", ОписаниеСобытия.Модуль.МетаданныеМодуля.ПолноеИмя));
|
||||
@ -312,6 +320,16 @@
|
||||
|
||||
#Область Запись
|
||||
|
||||
Функция ЛогированиеВключено(Знач Контекст = Неопределено, Приоритет = Неопределено)
|
||||
|
||||
Если Контекст = Неопределено Тогда
|
||||
Контекст = Контекст();
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Контекст <> Неопределено И Контекст.Включено И (Приоритет = Неопределено ИЛИ Контекст.УровеньЛога <= Приоритет);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НакопленныеСообщенияЛогирования(Очистить = Ложь) Экспорт
|
||||
|
||||
Контекст = Контекст();
|
||||
@ -329,7 +347,7 @@
|
||||
Процедура Записать(УровеньЛога, Сообщение, Приоритет)
|
||||
|
||||
Контекст = Контекст();
|
||||
Если Контекст = Неопределено ИЛИ НЕ Контекст.Включено ИЛИ Контекст.УровеньЛога > Приоритет Тогда
|
||||
Если НЕ ЛогированиеВключено(Контекст, Приоритет) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
|
@ -23,12 +23,13 @@
|
||||
// Подсистема должна находится в подсистеме "ЮТФункциональность"
|
||||
// Параметры:
|
||||
// ИмяПодсистемы - Строка - Имя подсистемы
|
||||
//
|
||||
// Серверные - Булево - Возвращять модули доступные на сервере
|
||||
// Клиентские - Булево - Возвращять модули доступные на клиенте
|
||||
// Возвращаемое значение:
|
||||
// Массив из Строка - Имена модулей входящих в подсистему
|
||||
Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт
|
||||
Функция МодулиПодсистемы(ИмяПодсистемы, Серверные = Истина, Клиентские = Истина) Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеПовтИсп.МодулиПодсистемы(ИмяПодсистемы);
|
||||
Возврат ЮТМетаданныеПовтИсп.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские);
|
||||
|
||||
КонецФункции
|
||||
|
||||
@ -40,7 +41,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание менеджера:
|
||||
// * ОписаниеТипа - см. ЮТМетаданныеСервер.ОписаниеТипаМетаданных
|
||||
// * Реквизиты - Структура из см. ЮТМетаданныеСервер.ОписаниеРеквизита
|
||||
// * Реквизиты - Структура из см. ЮТФабрика.ОписаниеРеквизита
|
||||
// * ТабличныеЧасти - Структура из Структура -
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение) Экспорт
|
||||
|
||||
|
@ -18,9 +18,9 @@
|
||||
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт
|
||||
Функция МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские) Экспорт
|
||||
|
||||
Возврат ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы);
|
||||
Возврат ЮТМетаданныеСервер.МодулиПодсистемы(ИмяПодсистемы, Серверные, Клиентские);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -49,10 +49,12 @@
|
||||
// Подсистема должна находится в подсистеме "ЮТФункциональность"
|
||||
// Параметры:
|
||||
// ИмяПодсистемы - Строка - Имя подсистемы
|
||||
// Серверные - Булево - Возвращять модули доступные на сервере
|
||||
// Клиентские - Булево - Возвращять модули доступные на клиенте
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Массив из Строка - Имена модулей входящих в подсистему
|
||||
Функция МодулиПодсистемы(ИмяПодсистемы) Экспорт
|
||||
Функция МодулиПодсистемы(Знач ИмяПодсистемы, Знач Серверные, Знач Клиентские) Экспорт
|
||||
|
||||
Подсистема = Метаданные.Подсистемы.ЮТФункциональность.Подсистемы.Найти(ИмяПодсистемы);
|
||||
|
||||
@ -68,7 +70,14 @@
|
||||
|
||||
Если Метаданные.ОбщиеМодули.Содержит(Объект) Тогда
|
||||
|
||||
Модули.Добавить(Объект.Имя);
|
||||
Добавить = (Серверные И Клиентские)
|
||||
ИЛИ (Серверные И (Объект.Сервер))
|
||||
ИЛИ (Клиентские И (Объект.КлиентУправляемоеПриложение Или Объект.ВызовСервера));
|
||||
// КлиентОбычноеПриложение сознательно не анализируется, он должен идти в паре с другой настройкой
|
||||
|
||||
Если Добавить Тогда
|
||||
Модули.Добавить(Объект.Имя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
@ -101,6 +110,7 @@
|
||||
Описание.Имя = Модуль.Имя;
|
||||
Описание.КлиентУправляемоеПриложение = Модуль.КлиентУправляемоеПриложение;
|
||||
Описание.КлиентОбычноеПриложение = Модуль.КлиентОбычноеПриложение;
|
||||
Описание.Глобальный = Модуль.Глобальный;
|
||||
Описание.Сервер = Модуль.Сервер;
|
||||
Описание.ВызовСервера = Модуль.ВызовСервера;
|
||||
Описание.Расширение = Модуль.РасширениеКонфигурации().Имя;
|
||||
@ -110,7 +120,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение, ЗаполнятьРеквизиты = Истина) Экспорт
|
||||
Функция ОписаниеОбъектМетаданных(Знач Значение, Знач ЗаполнятьРеквизиты = Истина) Экспорт
|
||||
|
||||
МетаданныеОбъекта = ОбъектМетаданных(Значение);
|
||||
ОписаниеТипа = ОписаниеТипаМетаданных(МетаданныеОбъекта);
|
||||
@ -273,22 +283,10 @@
|
||||
ЭтоКлюч = ИменаКлючевыхПолей.Найти(Реквизит.Имя) <> Неопределено;
|
||||
КонецЕсли;
|
||||
|
||||
КоллекцияОписаний.Вставить(Реквизит.Имя, ОписаниеРеквизита(Реквизит, ЭтоКлюч));
|
||||
КоллекцияОписаний.Вставить(Реквизит.Имя, ЮТФабрика.ОписаниеРеквизита(Реквизит, ЭтоКлюч));
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ОписаниеРеквизита(Реквизит, ЭтоКлюч) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Имя", Реквизит.Имя);
|
||||
Описание.Вставить("Тип", Реквизит.Тип);
|
||||
Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку);
|
||||
Описание.Вставить("ЭтоКлюч", ЭтоКлюч);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -109,11 +109,14 @@
|
||||
// Параметры:
|
||||
// Значение - Число
|
||||
// Шаг - Число
|
||||
Процедура Инкремент(Значение, Знач Шаг = 1) Экспорт
|
||||
// Возвращаемое значение:
|
||||
// Число - Результат инкремента
|
||||
Функция Инкремент(Значение, Знач Шаг = 1) Экспорт
|
||||
|
||||
Значение = Значение + Шаг;
|
||||
Возврат Значение;
|
||||
|
||||
КонецПроцедуры
|
||||
КонецФункции
|
||||
|
||||
Функция ЧислоВСтроку(Значение) Экспорт
|
||||
|
||||
@ -135,7 +138,7 @@
|
||||
Функция ПредставлениеПродолжительности(Знач Продолжительность) Экспорт
|
||||
|
||||
Представление = ЧислоВСтроку(Цел(Продолжительность / 1000));
|
||||
Представление = ДобавитьСтроку(Представление, Продолжительность % 1000, ".");
|
||||
Представление = ДобавитьСтроку(Представление, Формат(Продолжительность % 1000, "ЧЦ=3; ЧВН=;"), ".");
|
||||
|
||||
Инкремент(Представление, " сек");
|
||||
|
||||
@ -683,14 +686,18 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция СтрокаJSON(Значение) Экспорт
|
||||
Функция СтрокаJSON(Значение, ИспользоватьСериализатор = Истина) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
ВызватьИсключение МетодНеДоступен("ЮТОбщий.СтрокаJSON");
|
||||
#Иначе
|
||||
ЗаписьJSON = Новый ЗаписьJSON();
|
||||
ЗаписьJSON.УстановитьСтроку();
|
||||
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Значение);
|
||||
Если ИспользоватьСериализатор Тогда
|
||||
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, Значение);
|
||||
Иначе
|
||||
ЗаписатьJSON(ЗаписьJSON, Значение);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ЗаписьJSON.Закрыть();
|
||||
#КонецЕсли
|
||||
|
@ -21,7 +21,7 @@
|
||||
// СформироватьОтчет
|
||||
// Формирует отчет о результатах тестирования по заданным параметрам
|
||||
// Параметры:
|
||||
// РезультатВыполнения - Массив - Коллекция результатов выполнения, каждый элемент - структура, см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
// ПараметрыЗапуска - Структура - Параметры запуска, см. ЮТФабрика.ПараметрыЗапуска
|
||||
// Обработчик - ОписаниеОповещения
|
||||
Процедура СформироватьОтчет(РезультатВыполнения, ПараметрыЗапуска, Обработчик) Экспорт
|
||||
|
@ -30,6 +30,13 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует отчет в формате JSON
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные - Данные отчета
|
||||
Функция ДанныеОтчета(РезультатВыполнения) Экспорт
|
||||
|
||||
#Если ВебКлиент Тогда
|
||||
|
@ -30,6 +30,13 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Формирует отчет в формате jUnit
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатВыполнения - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные - Данные отчета
|
||||
Функция ДанныеОтчета(Знач РезультатВыполнения) Экспорт
|
||||
|
||||
Возврат СформироватьОтчетОТестировании(РезультатВыполнения);
|
||||
@ -44,7 +51,7 @@
|
||||
// Формирует отчет (xml-файл) и возвращает его в виде двоичных данных
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатТестирования - Массив - результаты всех сценариев теста
|
||||
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
// Возвращаемое значение:
|
||||
// ДвоичныеДанные - полученный отчет
|
||||
Функция СформироватьОтчетОТестировании(РезультатТестирования) Экспорт
|
||||
@ -58,9 +65,15 @@
|
||||
|
||||
Номер = 0;
|
||||
|
||||
Для Каждого Набор Из РезультатТестирования Цикл
|
||||
ЗаписатьНабор(ЗаписьXML, Набор, Номер);
|
||||
Номер = Номер + 1;
|
||||
Для Каждого Модуль Из РезультатТестирования Цикл
|
||||
|
||||
Для Каждого Набор Из Модуль.НаборыТестов Цикл
|
||||
|
||||
ЗаписатьНабор(ЗаписьXML, Набор, Номер);
|
||||
Номер = Номер + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ЗаписатьСвойства(ЗаписьXML, Новый Структура("executor, reportDate", "BIA YAXUnit", ТекущаяДатаСеанса()));
|
||||
|
@ -94,7 +94,8 @@
|
||||
Если ТипЗнч(ЗначениеКлючаЗапуска) = Тип("Булево") Тогда
|
||||
|
||||
Параметры.ВыполнятьМодульноеТестирование = ЗначениеКлючаЗапуска;
|
||||
Возврат Параметры;
|
||||
Параметры.showReport = Истина;
|
||||
Параметры.closeAfterTests = Ложь;
|
||||
|
||||
ИначеЕсли ТипЗнч(ЗначениеКлючаЗапуска) = Тип("Строка") Тогда
|
||||
|
||||
|
@ -26,7 +26,17 @@
|
||||
|
||||
Функция ОбработчикиСобытий() Экспорт
|
||||
|
||||
Возврат ЮТМетаданные.МодулиПодсистемы("ЮТОбработчикиСобытий");
|
||||
Серверные = Ложь;
|
||||
Клиентские = Ложь;
|
||||
#Если Сервер Тогда
|
||||
Серверные = Истина;
|
||||
#КонецЕсли
|
||||
|
||||
#Если Клиент Тогда
|
||||
Клиентские = Истина;
|
||||
#КонецЕсли
|
||||
|
||||
Возврат ЮТМетаданные.МодулиПодсистемы("ЮТОбработчикиСобытий", Серверные, Клиентские);
|
||||
|
||||
КонецФункции
|
||||
|
||||
|
@ -155,6 +155,28 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Перед выполнением тестов.
|
||||
//
|
||||
// Параметры:
|
||||
// ИсполняемыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
Процедура ПередВыполнениемТестов(ИсполняемыеМодули) Экспорт
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеМодули);
|
||||
ВызватьОбработчикРасширения("ПередВыполнениемТестов", Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// После выполнения тестов.
|
||||
//
|
||||
// Параметры:
|
||||
// РезультатТестирования - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля
|
||||
Процедура ПослеВыполненияТестов(РезультатТестирования) Экспорт
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(РезультатТестирования);
|
||||
ВызватьОбработчикРасширения("ПослеВыполненияТестов", Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СобытияЗагрузкиТестов
|
||||
@ -202,10 +224,10 @@
|
||||
|
||||
// Обработка события "ПослеФормированияИсполняемыхНаборовТестов"
|
||||
// Параметры:
|
||||
// КоллекцияКатегорийНаборов - Массив из см. ЮТФабрика.ОписаниеКатегорияНабораТестов - Набор исполняемых наборов
|
||||
Процедура ПослеФормированияИсполняемыхНаборовТестов(КоллекцияКатегорийНаборов) Экспорт
|
||||
// ИсполняемыеТестовыеМодули - Массив из см. ЮТФабрика.ОписаниеИсполняемогоТестовогоМодуля - Набор исполняемых наборов
|
||||
Процедура ПослеФормированияИсполняемыхНаборовТестов(ИсполняемыеТестовыеМодули) Экспорт
|
||||
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(КоллекцияКатегорийНаборов);
|
||||
Параметры = ЮТОбщий.ЗначениеВМассиве(ИсполняемыеТестовыеМодули);
|
||||
ВызватьОбработчикРасширения("ПослеФормированияИсполняемыхНаборовТестов", Параметры);
|
||||
|
||||
КонецПроцедуры
|
||||
|
57
exts/yaxunit/src/CommonModules/ЮТСтроки/Module.bsl
Normal file
57
exts/yaxunit/src/CommonModules/ЮТСтроки/Module.bsl
Normal file
@ -0,0 +1,57 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
Функция РусскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
|
||||
|
||||
Возврат Буквы("абвгдеёжзийклмнопрстуфхцчшщъыьэюя", НижнийРегистр, ВерхнийРегистр);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция АнглийскиеБуквы(НижнийРегистр = Истина, ВерхнийРегистр = Ложь) Экспорт
|
||||
|
||||
Возврат Буквы("abcdefghijklmnopqrstuvwxyz", НижнийРегистр, ВерхнийРегистр);
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция Цифры() Экспорт
|
||||
|
||||
Возврат "1234567890";
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Функция Буквы(Буквы, НижнийРегистр, ВерхнийРегистр)
|
||||
|
||||
Если НижнийРегистр И ВерхнийРегистр Тогда
|
||||
Возврат Буквы + ВРег(Буквы);
|
||||
ИначеЕсли НижнийРегистр Тогда
|
||||
Возврат Буквы;
|
||||
ИначеЕсли ВерхнийРегистр Тогда
|
||||
Возврат ВРег(Буквы);
|
||||
Иначе
|
||||
Возврат "";
|
||||
КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
11
exts/yaxunit/src/CommonModules/ЮТСтроки/ЮТСтроки.mdo
Normal file
11
exts/yaxunit/src/CommonModules/ЮТСтроки/ЮТСтроки.mdo
Normal 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="c2bf54a9-2026-41ed-8971-af1be24299c2">
|
||||
<name>ЮТСтроки</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Строки</value>
|
||||
</synonym>
|
||||
<clientManagedApplication>true</clientManagedApplication>
|
||||
<server>true</server>
|
||||
<clientOrdinaryApplication>true</clientOrdinaryApplication>
|
||||
</mdclass:CommonModule>
|
@ -166,28 +166,26 @@
|
||||
// Генерирует и возвращает случайную строку указанной длины, строка может содержать цифры, английские и русские буквы в разных регистрах.
|
||||
//
|
||||
// Параметры:
|
||||
// Длина - Число - Длина генерируемой строки, без учета префикса
|
||||
// Длина - Число - Длина генерируемой строки с учетом префикса
|
||||
// Префикс - Строка - Префикс строки
|
||||
// ДопустимыеСимволы - Строка - Допустимые символы из которая будет формироваться случайно строка
|
||||
// ДопустимыеСимволы - Строка - Допустимые символы из которая будет формироваться случайная строка
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Случайная строка
|
||||
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "", ДопустимыеСимволы = Неопределено) Экспорт
|
||||
Функция СлучайнаяСтрока(Знач Длина = 10, Префикс = "", Знач ДопустимыеСимволы = Неопределено) Экспорт
|
||||
|
||||
Если ДопустимыеСимволы = Неопределено Тогда
|
||||
Строка = "1234567890абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
Иначе
|
||||
Строка = ДопустимыеСимволы;
|
||||
ДопустимыеСимволы = ЮТСтроки.РусскиеБуквы(Истина, Истина) + ЮТСтроки.АнглийскиеБуквы(Истина, Истина) + ЮТСтроки.Цифры();
|
||||
КонецЕсли;
|
||||
|
||||
Результат = "";
|
||||
КоличествоСимволов = СтрДлина(Строка);
|
||||
КоличествоСимволов = СтрДлина(ДопустимыеСимволы);
|
||||
|
||||
Длина = Длина - СтрДлина(Префикс);
|
||||
|
||||
Для Инд = 1 По Длина Цикл
|
||||
|
||||
Результат = Результат + Сред(Строка, СлучайноеЧисло(1, КоличествоСимволов), 1);
|
||||
Результат = Результат + Сред(ДопустимыеСимволы, СлучайноеЧисло(1, КоличествоСимволов), 1);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
@ -195,6 +193,28 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Возвращяет случайный валидный идентификатор
|
||||
//
|
||||
// Параметры:
|
||||
// Длина - Число - Длина генерируемой строки с учетом префикса
|
||||
// Префикс - Строка - Префикс строки
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Строка - Случайный идентификатор
|
||||
Функция СлучайныйИдентификатор(Знач Длина = 10, Знач Префикс = "") Экспорт
|
||||
|
||||
НаборСимволов = "_" + ЮТСтроки.РусскиеБуквы(Истина, Истина) + ЮТСтроки.АнглийскиеБуквы(Истина, Истина);
|
||||
|
||||
Если ПустаяСтрока(Префикс) Тогда
|
||||
Префикс = СлучайнаяСтрока(1, "", НаборСимволов);
|
||||
КонецЕсли;
|
||||
|
||||
НаборСимволов = НаборСимволов + ЮТСтроки.Цифры();
|
||||
|
||||
Возврат СлучайнаяСтрока(Длина, Префикс, НаборСимволов);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Генерирует и возвращает случайную дату в указанном интервале (если не указан используется `0001-01-01 - 3999-12-31`).
|
||||
//
|
||||
// Параметры:
|
||||
@ -427,7 +447,7 @@
|
||||
ЗаменяемыеСтроки = ЮТТестовыеДанныеСлужебный.ПодстрокиДляЗаменыВИменахСвойств();
|
||||
|
||||
ЗначениеКолонки = ТабличныйДокумент.Область(НомерСтроки, НомерКолонки).Текст;
|
||||
Пока ЗначениеЗаполнено(ЗначениеКолонки) Цикл
|
||||
Пока ЗначениеЗаполнено(ЗначениеКолонки) Цикл
|
||||
|
||||
Для Каждого Замена Из ЗаменяемыеСтроки Цикл
|
||||
ПодстрокаПоиска = Замена.Ключ;
|
||||
@ -435,7 +455,7 @@
|
||||
ИмяКолонки = СтрЗаменить(ЗначениеКолонки, ПодстрокаПоиска, ПодстрокаЗамены);
|
||||
КонецЦикла;
|
||||
|
||||
Сведения = Новый Структура("НомерКолонки, ИмяКолонки", НомерКолонки, ИмяКолонки);
|
||||
Сведения = Новый Структура("НомерКолонки, ИмяКолонки", НомерКолонки, ИмяКолонки);
|
||||
СведенияКолонок.Добавить(Сведения);
|
||||
|
||||
НомерКолонки = НомерКолонки + 1;
|
||||
@ -445,14 +465,14 @@
|
||||
|
||||
НомерСтроки = НомерСтроки + 1;
|
||||
|
||||
Пока ЕстьЗначенияВСтроке(ТабличныйДокумент, НомерСтроки, СведенияКолонок) Цикл
|
||||
Пока ЕстьЗначенияВСтроке(ТабличныйДокумент, НомерСтроки, СведенияКолонок) Цикл
|
||||
|
||||
Структура = Новый Структура;
|
||||
|
||||
Для Каждого Сведения Из СведенияКолонок Цикл
|
||||
Для Каждого Сведения Из СведенияКолонок Цикл
|
||||
Значение = СокрЛП(ТабличныйДокумент.Область(НомерСтроки, Сведения.НомерКолонки).Текст);
|
||||
Структура.Вставить(Сведения.ИмяКолонки, Значение);
|
||||
КонецЦикла;
|
||||
КонецЦикла;
|
||||
|
||||
МассивДанных.Добавить(Структура);
|
||||
|
||||
@ -558,15 +578,15 @@
|
||||
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
|
||||
// Возвращаемое значение:
|
||||
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
|
||||
Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено,
|
||||
Функция ТаблицаЗначенийИзТабличногоДокумента(ТабличныйДокумент, ОписанияТипов, КэшЗначений = Неопределено,
|
||||
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
|
||||
|
||||
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
|
||||
ИсточникДанных = СтруктурыТабличногоДокумента(ТабличныйДокумент);
|
||||
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТипизированнаяТаблицаЗначений(
|
||||
ИсточникДанных,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
ИсточникДанных,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
ЗаменяемыеЗначения,
|
||||
Параметры
|
||||
);
|
||||
@ -586,15 +606,15 @@
|
||||
// * ОбменДаннымиЗагрузка - Булево - По умолчанию - Истина
|
||||
// Возвращаемое значение:
|
||||
// см. ЮТТестовыеДанные_ТаблицыЗначений.ТаблицаЗначенийИзМассиваСтруктур
|
||||
Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено,
|
||||
Функция ТаблицаЗначенийИзТаблицыMarkDown(Строки, ОписанияТипов, КэшЗначений = Неопределено,
|
||||
ЗаменяемыеЗначения = Неопределено, ПараметрыСозданияОбъектов = Неопределено) Экспорт
|
||||
|
||||
Параметры = ЮТТестовыеДанные_ТаблицыЗначений.ПараметрыЗаполненияТаблицыЗначений(ПараметрыСозданияОбъектов);
|
||||
ИсточникДанных = ТаблицаMarkDown(Строки);
|
||||
ТаблицаЗначений = ЮТТестовыеДанные_ТаблицыЗначений.ТипизированнаяТаблицаЗначений(
|
||||
ИсточникДанных,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
ИсточникДанных,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
ЗаменяемыеЗначения,
|
||||
Параметры
|
||||
);
|
||||
@ -644,4 +664,4 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
#КонецОбласти
|
||||
|
@ -278,6 +278,30 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание исполняемого тестового модуля.
|
||||
// Содержит всю необходимую информацию для прогона тестов, а также данные результата
|
||||
// Параметры:
|
||||
// ТестовыйМодуль - см. ОписаниеТестовогоМодуля
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание тестового модуля:
|
||||
// * МетаданныеМодуля - см. ЮТФабрика.ОписаниеМодуля
|
||||
// * НаборыТестов - Массив из см. ЮТФабрика.ОписаниеИсполняемогоНабораТестов
|
||||
// * Ошибки - Массив из см. ЮТФабрика.ОписаниеВозникшейОшибки
|
||||
// * НастройкиВыполнения- Структура - Настройки исполнения теста
|
||||
Функция ОписаниеИсполняемогоТестовогоМодуля(ТестовыйМодуль) Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
|
||||
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
|
||||
Описание.Вставить("НаборыТестов", Новый Массив);
|
||||
Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(ТестовыйМодуль.Ошибки));
|
||||
Описание.Вставить("НастройкиВыполнения", ЮТОбщий.СкопироватьСтруктуру(ТестовыйМодуль.НастройкиВыполнения));
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// ОписаниеИсполняемогоНабораТестов
|
||||
// Возвращает описание исполняемого тестового набора.
|
||||
// Содержит данные необходимые для выполнения прогона тестов
|
||||
@ -307,6 +331,7 @@
|
||||
Описание.Вставить("Теги", НаборТестов.Теги);
|
||||
Описание.Вставить("Ошибки", ЮТОбщий.СкопироватьМассив(НаборТестов.Ошибки));
|
||||
Описание.Вставить("Режим", "");
|
||||
Описание.Вставить("ТестовыйМодуль", ТестовыйМодуль);
|
||||
Описание.Вставить("МетаданныеМодуля", ТестовыйМодуль.МетаданныеМодуля);
|
||||
Описание.Вставить("Тесты", Новый Массив);
|
||||
Описание.Вставить("Выполнять", Описание.Ошибки.Количество() = 0);
|
||||
@ -425,6 +450,7 @@
|
||||
// * КлиентОбычноеПриложение - Булево - Доступность контекста
|
||||
// * Сервер - Булево - Доступность контекста
|
||||
// * ВызовСервера - Булево - Доступность контекста
|
||||
// * Глобальный - Булево - Доступность контекста
|
||||
Функция ОписаниеМодуля() Экспорт
|
||||
|
||||
Описание = Новый Структура;
|
||||
@ -435,6 +461,7 @@
|
||||
Описание.Вставить("КлиентОбычноеПриложение", Ложь);
|
||||
Описание.Вставить("Сервер", Ложь);
|
||||
Описание.Вставить("ВызовСервера", Ложь);
|
||||
Описание.Вставить("Глобальный", Ложь);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
@ -591,6 +618,30 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Описание реквизита объекта метаданных
|
||||
//
|
||||
// Параметры:
|
||||
// Реквизит - ОбъектМетаданных
|
||||
// ЭтоКлюч - Булево - Это ключевой реквизит (ссылка, измерение)
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - Описание реквизита:
|
||||
// * Имя - Строка
|
||||
// * Тип - ОписаниеТипов
|
||||
// * Обязательный - Булево
|
||||
// * ЭтоКлюч - Булево
|
||||
Функция ОписаниеРеквизита(Знач Реквизит, Знач ЭтоКлюч) Экспорт
|
||||
|
||||
Описание = Новый Структура();
|
||||
Описание.Вставить("Имя", Реквизит.Имя);
|
||||
Описание.Вставить("Тип", Реквизит.Тип);
|
||||
Описание.Вставить("Обязательный", Реквизит.ПроверкаЗаполнения = ПроверкаЗаполнения.ВыдаватьОшибку);
|
||||
Описание.Вставить("ЭтоКлюч", ЭтоКлюч);
|
||||
|
||||
Возврат Описание;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область КонструкторыКонтекстов
|
||||
@ -813,10 +864,9 @@
|
||||
|
||||
Функция НастройкиВыполнения() Экспорт
|
||||
|
||||
ПараметрыИсполнения = ПараметрыИсполненияТеста();
|
||||
|
||||
Настройки = Новый Структура();
|
||||
|
||||
ПараметрыИсполнения = ПараметрыИсполненияТеста();
|
||||
Настройки.Вставить(ПараметрыИсполнения.ВТранзакции, Ложь);
|
||||
|
||||
Возврат Настройки;
|
||||
@ -827,6 +877,7 @@
|
||||
|
||||
Параметры = Новый Структура();
|
||||
Параметры.Вставить("file", "");
|
||||
Параметры.Вставить("console", Ложь);
|
||||
Параметры.Вставить("enable", Неопределено);
|
||||
Параметры.Вставить("level", ЮТЛогирование.УровниЛога().Отладка);
|
||||
|
||||
|
@ -115,6 +115,10 @@
|
||||
// Булево - Этот модуль содержит тесты
|
||||
Функция ЭтоТестовыйМодуль(МетаданныеМодуля) Экспорт
|
||||
|
||||
Если МетаданныеМодуля.Глобальный Тогда
|
||||
Возврат Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
#Если Сервер Тогда
|
||||
Возврат ЮТОбщий.МетодМодуляСуществует(МетаданныеМодуля.Имя, ИмяМетодаСценариев());
|
||||
#КонецЕсли
|
||||
|
@ -92,6 +92,7 @@
|
||||
<commonModules>CommonModule.ЮТСобытия</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеКлиентСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСравнениеСервер</commonModules>
|
||||
<commonModules>CommonModule.ЮТСтроки</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанные</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанные_ТаблицыЗначений</commonModules>
|
||||
<commonModules>CommonModule.ЮТТестовыеДанныеВызовСервера</commonModules>
|
||||
|
@ -9,7 +9,6 @@
|
||||
<key>ru</key>
|
||||
<value>Конструктор тестовых данных</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<defaultForm>DataProcessor.ЮТКонструкторТестовыхДанных.Form.КлиентскийКонструктор</defaultForm>
|
||||
<forms uuid="c0ef2e2b-96b6-4e4c-b41d-32d571d74653">
|
||||
<name>КлиентскийКонструктор</name>
|
||||
|
@ -0,0 +1,35 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
|
||||
|
||||
ПараметрыОткрытия = Новый Структура("ЗагрузитьТесты", Истина);
|
||||
|
||||
ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.Основная",
|
||||
ПараметрыОткрытия,
|
||||
ПараметрыВыполненияКоманды.Источник,
|
||||
ПараметрыВыполненияКоманды.Уникальность,
|
||||
ПараметрыВыполненияКоманды.Окно,
|
||||
ПараметрыВыполненияКоманды.НавигационнаяСсылка);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -0,0 +1,33 @@
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
//
|
||||
// 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.
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ОбработчикиСобытий
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
|
||||
|
||||
ОткрытьФорму("Обработка.ЮТЮнитТесты.Форма.СозданиеНастройки",
|
||||
,
|
||||
ПараметрыВыполненияКоманды.Источник,
|
||||
ПараметрыВыполненияКоманды.Уникальность,
|
||||
ПараметрыВыполненияКоманды.Окно,
|
||||
ПараметрыВыполненияКоманды.НавигационнаяСсылка);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
@ -126,7 +126,7 @@
|
||||
<item xsi:type="FilterItemComparison">
|
||||
<left xsi:type="dcscor:Field">ДеревоТестов.ВремяВыполнения</left>
|
||||
<comparisonType>Greater</comparisonType>
|
||||
<right xsi:type="xs:decimal">1</right>
|
||||
<right xsi:type="xs:decimal">1000</right>
|
||||
</item>
|
||||
</item>
|
||||
<item xsi:type="FilterItemGroup">
|
||||
@ -139,7 +139,7 @@
|
||||
<item xsi:type="FilterItemComparison">
|
||||
<left xsi:type="dcscor:Field">ДеревоТестов.ВремяВыполнения</left>
|
||||
<comparisonType>Greater</comparisonType>
|
||||
<right xsi:type="xs:decimal">10</right>
|
||||
<right xsi:type="xs:decimal">10000</right>
|
||||
</item>
|
||||
</item>
|
||||
</item>
|
||||
|
@ -3,9 +3,233 @@
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ОсновнаяКоманднаяПанель</name>
|
||||
<id>122</id>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаЗапуск</name>
|
||||
<id>140</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ЗапуститьВсеТестыОсновная</name>
|
||||
<id>138</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ЗапуститьВсеТестыОсновнаяРасширеннаяПодсказка</name>
|
||||
<id>139</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ЗапуститьВсеТесты</commandName>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаМенюЗапуск</name>
|
||||
<id>134</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ПерезапуститьУпавшиеТесты</name>
|
||||
<id>136</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Упавшие тесты</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ПерезапуститьУпавшиеТестыРасширеннаяПодсказка</name>
|
||||
<id>137</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ПерезапуститьУпавшиеТесты</commandName>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ЗапуститьВсеТесты</name>
|
||||
<id>126</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Все тесты</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ЗапуститьВсеТестыРасширеннаяПодсказка</name>
|
||||
<id>127</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ЗапуститьВсеТесты</commandName>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ЗапуститьВыделенныеТесты</name>
|
||||
<id>142</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ЗапуститьВыделенныеТестыРасширеннаяПодсказка</name>
|
||||
<id>143</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ЗапуститьВыделенныеТесты</commandName>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ЗамерВремениВыполнения</name>
|
||||
<id>128</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ЗамерВремениВыполненияРасширеннаяПодсказка</name>
|
||||
<id>129</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ЗамерВремениВыполнения</commandName>
|
||||
<representation>Auto</representation>
|
||||
<onlyInAllActions>true</onlyInAllActions>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value> </value>
|
||||
</title>
|
||||
<extendedTooltip>
|
||||
<name>ГруппаМенюЗапускРасширеннаяПодсказка</name>
|
||||
<id>135</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<type>Popup</type>
|
||||
<extInfo xsi:type="form:PopupGroupExtInfo">
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.GenerateReport</picture>
|
||||
</picture>
|
||||
</extInfo>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Группа1</value>
|
||||
</title>
|
||||
<extendedTooltip>
|
||||
<name>ГруппаЗапускРасширеннаяПодсказка</name>
|
||||
<id>141</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<extInfo xsi:type="form:ButtonGroupExtInfo">
|
||||
<representation>Compact</representation>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ФормаСформироватьНастройки</name>
|
||||
<id>125</id>
|
||||
<id>17</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@ -596,12 +820,45 @@
|
||||
<contextMenu>
|
||||
<name>ДеревоТестовКонтекстноеМеню</name>
|
||||
<id>31</id>
|
||||
<items xsi:type="form:Button">
|
||||
<name>ДеревоТестовКонтекстноеМенюЗапуститьВыделенныеТесты</name>
|
||||
<id>130</id>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Запустить выбранные тесты</value>
|
||||
</title>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<extendedTooltip>
|
||||
<name>ДеревоТестовКонтекстноеМенюЗапуститьВыделенныеТестыРасширеннаяПодсказка</name>
|
||||
<id>131</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<commandName>Form.Command.ЗапуститьВыделенныеТесты</commandName>
|
||||
<representation>Auto</representation>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<placementArea>UserCmds</placementArea>
|
||||
<representationInContextMenu>Auto</representationInContextMenu>
|
||||
</items>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<representation>Tree</representation>
|
||||
<readOnly>true</readOnly>
|
||||
@ -625,6 +882,8 @@
|
||||
<rowsPicture xsi:type="core:PictureRef">
|
||||
<picture>CommonPicture.ЮТЭлементыТестов</picture>
|
||||
</rowsPicture>
|
||||
<searchStringLocation>None</searchStringLocation>
|
||||
<searchControlLocation>None</searchControlLocation>
|
||||
</items>
|
||||
<items xsi:type="form:FormGroup">
|
||||
<name>ГруппаДанныеОшибок</name>
|
||||
@ -1106,6 +1365,10 @@
|
||||
<event>OnCreateAtServer</event>
|
||||
<name>ПриСозданииНаСервере</name>
|
||||
</handlers>
|
||||
<handlers>
|
||||
<event>OnOpen</event>
|
||||
<name>ПриОткрытии</name>
|
||||
</handlers>
|
||||
<autoTitle>true</autoTitle>
|
||||
<autoUrl>true</autoUrl>
|
||||
<group>Vertical</group>
|
||||
@ -1150,7 +1413,7 @@
|
||||
<key>ru</key>
|
||||
<value>Представление</value>
|
||||
</title>
|
||||
<id>4</id>
|
||||
<id>12</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
@ -1168,7 +1431,7 @@
|
||||
<key>ru</key>
|
||||
<value>Состояние</value>
|
||||
</title>
|
||||
<id>6</id>
|
||||
<id>20</id>
|
||||
<valueType>
|
||||
<types>String</types>
|
||||
<stringQualifiers/>
|
||||
@ -1403,10 +1666,10 @@
|
||||
</additionalColumns>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>АдресДанных</name>
|
||||
<name>АдресОтчета</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Адрес данных</value>
|
||||
<value>Адрес отчета</value>
|
||||
</title>
|
||||
<id>16</id>
|
||||
<valueType>
|
||||
@ -1440,6 +1703,23 @@
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>ЗагрузитьТестыПриОткрытии</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Загрузить тесты при открытии</value>
|
||||
</title>
|
||||
<id>125</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>Сравнить</name>
|
||||
<title>
|
||||
@ -1471,11 +1751,99 @@
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.ReportSettings</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>СформироватьНастройки</name>
|
||||
</handler>
|
||||
</action>
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ЗапуститьВсеТесты</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Запустить все тесты</value>
|
||||
</title>
|
||||
<id>3</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.GenerateReport</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ЗапуститьВсеТесты</name>
|
||||
</handler>
|
||||
</action>
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ЗамерВремениВыполнения</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Замер времени выполнения</value>
|
||||
</title>
|
||||
<id>4</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.BusinessProcessStart</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ЗамерВремениВыполнения</name>
|
||||
</handler>
|
||||
</action>
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ЗапуститьВыделенныеТесты</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Выбранные тесты</value>
|
||||
</title>
|
||||
<id>5</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>StdPicture.GenerateReport</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ЗапуститьВыделенныеТесты</name>
|
||||
</handler>
|
||||
</action>
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<formCommands>
|
||||
<name>ПерезапуститьУпавшиеТесты</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Перезапустить упавшие тесты</value>
|
||||
</title>
|
||||
<id>6</id>
|
||||
<use>
|
||||
<common>true</common>
|
||||
</use>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>CommonPicture.ЮТУпал</picture>
|
||||
</picture>
|
||||
<action xsi:type="form:FormCommandHandlerContainer">
|
||||
<handler>
|
||||
<name>ПерезапуститьУпавшиеТесты</name>
|
||||
</handler>
|
||||
</action>
|
||||
<representation>TextPicture</representation>
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</formCommands>
|
||||
<commandInterface>
|
||||
|
@ -16,22 +16,40 @@
|
||||
//
|
||||
//©///////////////////////////////////////////////////////////////////////////©//
|
||||
|
||||
#Область ОписаниеПеременных
|
||||
|
||||
&НаКлиенте
|
||||
Перем ИсполняемыеТестовыеМодули;
|
||||
|
||||
&НаКлиенте
|
||||
Перем ПараметрыЗапускаТестирования;
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытийФормы
|
||||
|
||||
&НаСервере
|
||||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||||
|
||||
Если Параметры.Свойство("АдресХранилища") И ЭтоАдресВременногоХранилища(Параметры.АдресХранилища) Тогда
|
||||
|
||||
ОтобразитьРезультатыТестирования(Параметры.АдресХранилища);
|
||||
|
||||
АдресОтчета = Параметры.АдресХранилища;
|
||||
КонецЕсли;
|
||||
|
||||
Параметры.Свойство("ЗагрузитьТесты", ЗагрузитьТестыПриОткрытии);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОбработчикиСобытийЭлементовШапкиФормы
|
||||
&НаКлиенте
|
||||
Процедура ПриОткрытии(Отказ)
|
||||
|
||||
Если ЗначениеЗаполнено(АдресОтчета) Тогда
|
||||
ДанныеОтчета = ДанныеОтчета(АдресОтчета);
|
||||
ПослеЗагрузкиТестов(ДанныеОтчета.РезультатыТестирования, ДанныеОтчета.ПараметрыЗапуска);
|
||||
ИначеЕсли ЗагрузитьТестыПриОткрытии Тогда
|
||||
ЗагрузитьТесты();
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@ -90,67 +108,114 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗамерВремениВыполнения(Команда)
|
||||
|
||||
Обработчик = Новый ОписаниеОповещения("ПослеВодаКоличестваИтерацийЗамера", ЭтотОбъект);
|
||||
ПоказатьВводЧисла(Обработчик, 100, "Укажите количество итераций замера", 3, 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗапуститьВсеТесты(Команда)
|
||||
|
||||
ВыполнитьТестовыеМодули(ИсполняемыеТестовыеМодули);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПерезапуститьУпавшиеТесты(Команда)
|
||||
|
||||
СтатусыИсполненияТеста = ЮТФабрика.СтатусыИсполненияТеста();
|
||||
Статусы = ЮТОбщий.ЗначениеВМассиве(СтатусыИсполненияТеста.Ошибка, СтатусыИсполненияТеста.Сломан);
|
||||
|
||||
Модули = МодулиСоответствующиеСтатусу(Статусы);
|
||||
ВыполнитьТестовыеМодули(Модули);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗапуститьВыделенныеТесты(Команда)
|
||||
|
||||
Модули = ВыделенныеТестовыеМодули();
|
||||
ВыполнитьТестовыеМодули(Модули);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
&НаСервере
|
||||
Процедура ОтобразитьРезультатыТестирования(АдресХранилища)
|
||||
#Область ВыводОтчета
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
Функция ДанныеОтчета(Знач АдресХранилища)
|
||||
|
||||
Данные = ПолучитьИзВременногоХранилища(АдресХранилища);
|
||||
УдалитьИзВременногоХранилища(АдресХранилища);
|
||||
|
||||
РезультатТестирования = Данные.РезультатыТестирования;
|
||||
Возврат Данные;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор)
|
||||
|
||||
СтрокаТеста.Представление = Тест.Имя;
|
||||
СтрокаТеста.Контекст = НормализоватьКонтекст(Набор.Режим);
|
||||
СтрокаТеста.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Тест.Длительность);
|
||||
СтрокаТеста.ВремяВыполнения = Тест.Длительность;
|
||||
СтрокаТеста.Состояние = Тест.Статус;
|
||||
СтрокаТеста.ТипОбъекта = 3;
|
||||
СтрокаТеста.Иконка = КартинкаСтатуса(Тест.Статус);
|
||||
|
||||
ЗаполнитьОшибки(СтрокаТеста, Тест);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Функция ОбновитьСтатистикуНабора(СтрокаНабора)
|
||||
|
||||
СтатистикаНабора = СтатистикаНабора(СтрокаНабора);
|
||||
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
|
||||
|
||||
Если СтатистикаНабора.Сломано Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Сломан;
|
||||
ИначеЕсли СтатистикаНабора.Упало Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Ошибка;
|
||||
ИначеЕсли СтатистикаНабора.Пропущено Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Пропущен;
|
||||
ИначеЕсли СтатистикаНабора.Неизвестно Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Ошибка;
|
||||
ИначеЕсли СтатистикаНабора.Ожидание Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Ожидание;
|
||||
Иначе
|
||||
СтрокаНабора.Состояние = Статусы.Успешно;
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаНабора.Прогресс = ГрафическоеПредставлениеСтатистики(СтатистикаНабора);
|
||||
СтрокаНабора.Иконка = КартинкаСтатуса(СтрокаНабора.Состояние);
|
||||
|
||||
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(СтатистикаНабора.Продолжительность);
|
||||
СтрокаНабора.ВремяВыполнения = СтатистикаНабора.Продолжительность;
|
||||
|
||||
Возврат СтатистикаНабора;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьОбщуюСтатистику(ОбновлятьСтатистикуНаборов)
|
||||
|
||||
ОбщаяСтатистика = Статистика();
|
||||
|
||||
Для Каждого Набор Из РезультатТестирования Цикл
|
||||
Для Каждого СтрокаНабора Из ДеревоТестов.ПолучитьЭлементы() Цикл
|
||||
|
||||
СтрокаНабора = ДеревоТестов.ПолучитьЭлементы().Добавить();
|
||||
СтрокаНабора.Набор = Истина;
|
||||
СтрокаНабора.Представление = Набор.Представление;
|
||||
СтрокаНабора.Контекст = НормализоватьКонтекст(Набор.Режим);
|
||||
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Набор.Длительность);
|
||||
СтрокаНабора.ВремяВыполнения = Набор.Длительность / 1000;
|
||||
СтрокаНабора.ТипОбъекта = 2;
|
||||
|
||||
ЗаполнитьОшибки(СтрокаНабора, Набор);
|
||||
|
||||
СтатистикаНабора = Статистика();
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
СтрокаТеста = СтрокаНабора.ПолучитьЭлементы().Добавить();
|
||||
СтрокаТеста.Представление = Тест.Имя;
|
||||
СтрокаТеста.Контекст = НормализоватьКонтекст(Набор.Режим);
|
||||
СтрокаТеста.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Тест.Длительность);
|
||||
СтрокаТеста.ВремяВыполнения = Тест.Длительность / 1000;
|
||||
СтрокаТеста.Состояние = Тест.Статус;
|
||||
СтрокаТеста.ТипОбъекта = 3;
|
||||
|
||||
СтрокаТеста.Иконка = КартинкаСтатуса(Тест.Статус);
|
||||
ЗаполнитьОшибки(СтрокаТеста, Тест);
|
||||
ИнкрементСтатистики(СтатистикаНабора, Тест.Статус, Статусы);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если СтатистикаНабора.Сломано Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Сломан;
|
||||
ИначеЕсли СтатистикаНабора.Упало Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Ошибка;
|
||||
ИначеЕсли СтатистикаНабора.Пропущено Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Пропущен;
|
||||
ИначеЕсли СтатистикаНабора.Неизвестно Тогда
|
||||
СтрокаНабора.Состояние = Статусы.Ошибка;
|
||||
Если ОбновлятьСтатистикуНаборов Тогда
|
||||
СтатистикаНабора = ОбновитьСтатистикуНабора(СтрокаНабора);
|
||||
Иначе
|
||||
СтрокаНабора.Состояние = Статусы.Успешно;
|
||||
СтатистикаНабора = СтатистикаНабора(СтрокаНабора);
|
||||
КонецЕсли;
|
||||
|
||||
СтрокаНабора.Прогресс = ГрафическоеПредставлениеСтатистики(СтатистикаНабора);
|
||||
|
||||
СтрокаНабора.Иконка = КартинкаСтатуса(СтрокаНабора.Состояние);
|
||||
|
||||
Для Каждого Элемент Из СтатистикаНабора Цикл
|
||||
ЮТОбщий.Инкремент(ОбщаяСтатистика[Элемент.Ключ], Элемент.Значение);
|
||||
КонецЦикла;
|
||||
@ -158,10 +223,27 @@
|
||||
КонецЦикла;
|
||||
|
||||
Элементы.СтатистикаВыполнения.Заголовок = ПредставлениеСтатистики(ОбщаяСтатистика);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция СтатистикаНабора(СтрокаНабора)
|
||||
|
||||
СтатистикаНабора = Статистика();
|
||||
Статусы = ЮТФабрика.СтатусыИсполненияТеста();
|
||||
|
||||
Для Каждого СтрокаТеста Из СтрокаНабора.ПолучитьЭлементы() Цикл
|
||||
|
||||
ИнкрементСтатистики(СтатистикаНабора, СтрокаТеста.Состояние, Статусы);
|
||||
ЮТОбщий.Инкремент(СтатистикаНабора.Продолжительность, СтрокаТеста.ВремяВыполнения);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СтатистикаНабора;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Процедура ЗаполнитьОшибки(СтрокаДерева, ОписаниеОбъекта)
|
||||
|
||||
Для Каждого Ошибка Из ОписаниеОбъекта.Ошибки Цикл
|
||||
@ -176,7 +258,7 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиенте
|
||||
Функция Статистика()
|
||||
|
||||
Статистика = Новый Структура();
|
||||
@ -185,13 +267,15 @@
|
||||
Статистика.Вставить("Упало", 0);
|
||||
Статистика.Вставить("Сломано", 0);
|
||||
Статистика.Вставить("Пропущено", 0);
|
||||
Статистика.Вставить("Ожидание", 0);
|
||||
Статистика.Вставить("Неизвестно", 0);
|
||||
Статистика.Вставить("Продолжительность", 0);
|
||||
|
||||
Возврат Статистика;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Функция НормализоватьКонтекст(Контекст)
|
||||
|
||||
Если СтрНачинаетсяС(Контекст, "Клиент") Тогда
|
||||
@ -202,7 +286,7 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
&НаКлиентеНаСервереБезКонтекста
|
||||
Процедура ИнкрементСтатистики(Статистика, Статус, Знач Статусы = Неопределено)
|
||||
|
||||
Если Статусы = Неопределено Тогда
|
||||
@ -227,6 +311,10 @@
|
||||
|
||||
ЮТОбщий.Инкремент(Статистика.Пропущено);
|
||||
|
||||
ИначеЕсли Статус = Статусы.Ожидание Тогда
|
||||
|
||||
ЮТОбщий.Инкремент(Статистика.Ожидание);
|
||||
|
||||
Иначе
|
||||
|
||||
ЮТОбщий.Инкремент(Статистика.Неизвестно);
|
||||
@ -235,6 +323,8 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Интерфейсное
|
||||
|
||||
&НаСервереБезКонтекста
|
||||
@ -272,7 +362,13 @@
|
||||
БлокиСтатистики = Новый Массив();
|
||||
Разделитель = "; ";
|
||||
|
||||
БлокиСтатистики.Добавить(СтрШаблон("Тестов: %1/%2", Статистика.Всего, Статистика.Всего - Статистика.Пропущено));
|
||||
БлокиСтатистики.Добавить(СтрШаблон("Тестов: %1/%2", Статистика.Всего - Статистика.Пропущено - Статистика.Ожидание, Статистика.Всего));
|
||||
|
||||
Если Статистика.Ожидание Тогда
|
||||
БлокиСтатистики.Добавить(Разделитель);
|
||||
БлокиСтатистики.Добавить(БиблиотекаКартинок.ЮТНеизвестный);
|
||||
БлокиСтатистики.Добавить(" Ожидание: " + Статистика.Ожидание);
|
||||
КонецЕсли;
|
||||
|
||||
Если Статистика.Пропущено Тогда
|
||||
БлокиСтатистики.Добавить(Разделитель);
|
||||
@ -298,6 +394,9 @@
|
||||
БлокиСтатистики.Добавить(" Неизвестно: " + Статистика.Неизвестно);
|
||||
КонецЕсли;
|
||||
|
||||
БлокиСтатистики.Добавить(Разделитель);
|
||||
БлокиСтатистики.Добавить(" Время выполнения: " + ЮТОбщий.ПредставлениеПродолжительности(Статистика.Продолжительность));
|
||||
|
||||
Возврат Новый ФорматированнаяСтрока(БлокиСтатистики);
|
||||
|
||||
КонецФункции
|
||||
@ -315,11 +414,14 @@
|
||||
Функция БлокиСтатистики(Статистика)
|
||||
|
||||
Блоки = Новый Массив();
|
||||
Блоки.Добавить(Новый Структура("Количество, Цвет", Статистика.Успешно, "25AE88"));
|
||||
Блоки.Добавить(Новый Структура("Количество, Цвет", Статистика.Пропущено, "999999"));
|
||||
Блоки.Добавить(Новый Структура("Количество, Цвет", Статистика.Упало, "EFCE4A"));
|
||||
Блоки.Добавить(Новый Структура("Количество, Цвет", Статистика.Сломано, "D75A4A"));
|
||||
Блоки.Добавить(Новый Структура("Количество, Цвет", Статистика.Неизвестно, "9400d3"));
|
||||
Ключи = "Количество, Цвет";
|
||||
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Успешно, "25AE88"));
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Пропущено, "999999"));
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Упало, "EFCE4A"));
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Сломано, "D75A4A"));
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Ожидание, "BBBBBB"));
|
||||
Блоки.Добавить(Новый Структура(Ключи, Статистика.Неизвестно, "9400d3"));
|
||||
|
||||
Сдвиг = 0;
|
||||
Высота = 20;
|
||||
@ -348,6 +450,233 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ЗагрузкаТестов
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ЗагрузитьТесты()
|
||||
|
||||
ПараметрыЗапуска = ПараметрыЗапуска();
|
||||
|
||||
ПараметрыЗагрузки = ЮТИсполнительКлиент.ПараметрыИсполнения();
|
||||
ПараметрыЗагрузки.Цепочка.Добавить(Новый ОписаниеОповещения("ПослеЗагрузкиТестов", ЭтотОбъект, ПараметрыЗапуска));
|
||||
ПараметрыЗагрузки.ПараметрыЗапуска = ПараметрыЗапуска;
|
||||
|
||||
ЮТСобытия.Инициализация(ПараметрыЗагрузки.ПараметрыЗапуска);
|
||||
ЮТИсполнительКлиент.ОбработчикЗагрузитьТесты(Неопределено, ПараметрыЗагрузки);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПослеЗагрузкиТестов(Результат, ПараметрыЗапуска) Экспорт
|
||||
|
||||
ИсполняемыеТестовыеМодули = Результат;
|
||||
ПараметрыЗапускаТестирования = ПараметрыЗапуска;
|
||||
|
||||
Для Каждого ТестовыйМодуль Из ИсполняемыеТестовыеМодули Цикл
|
||||
|
||||
Для Каждого Набор Из ТестовыйМодуль.НаборыТестов Цикл
|
||||
|
||||
СтрокаНабора = ДеревоТестов.ПолучитьЭлементы().Добавить();
|
||||
СтрокаНабора.Набор = Истина;
|
||||
СтрокаНабора.Представление = Набор.Представление;
|
||||
СтрокаНабора.Контекст = НормализоватьКонтекст(Набор.Режим);
|
||||
СтрокаНабора.ПредставлениеВремяВыполнения = ЮТОбщий.ПредставлениеПродолжительности(Набор.Длительность);
|
||||
СтрокаНабора.ВремяВыполнения = Набор.Длительность;
|
||||
СтрокаНабора.ТипОбъекта = 2;
|
||||
|
||||
ЗаполнитьОшибки(СтрокаНабора, Набор);
|
||||
|
||||
Набор.Вставить("Идентификатор", СтрокаНабора.ПолучитьИдентификатор());
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
СтрокаТеста = СтрокаНабора.ПолучитьЭлементы().Добавить();
|
||||
|
||||
ОтобразитьРезультатТеста(СтрокаТеста, Тест, Набор);
|
||||
|
||||
Тест.Вставить("Идентификатор", СтрокаТеста.ПолучитьИдентификатор());
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОбновитьОбщуюСтатистику(Истина);
|
||||
|
||||
ЮТКонтекст.УдалитьКонтекст();
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ЗапускТестов
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыполнитьТестовыеМодули(Модули)
|
||||
|
||||
Если Модули.Количество() = 0 Тогда
|
||||
ПоказатьПредупреждение(, "Нет тестов для запуска");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ОповещениеПользователю("Прогон тестов", "Запушено выполнение тестов");
|
||||
|
||||
ЮТСобытия.Инициализация(ПараметрыЗапускаТестирования);
|
||||
ЮТСобытия.ПослеФормированияИсполняемыхНаборовТестов(Модули);
|
||||
ЮТСобытия.ПередВыполнениемТестов(Модули);
|
||||
|
||||
Для Каждого Модуль Из Модули Цикл
|
||||
|
||||
Результат = ЮТИсполнительКлиент.ВыполнитьТестыМодуля(Модуль);
|
||||
|
||||
Для Каждого Набор Из Результат.НаборыТестов Цикл
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
|
||||
Строка = ДеревоТестов.НайтиПоИдентификатору(Тест.Идентификатор);
|
||||
ОтобразитьРезультатТеста(Строка, Тест, Набор);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Строка = ДеревоТестов.НайтиПоИдентификатору(Набор.Идентификатор);
|
||||
ОбновитьСтатистикуНабора(Строка);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ОбновитьОбщуюСтатистику(Ложь);
|
||||
|
||||
ЮТКонтекст.УдалитьКонтекст();
|
||||
|
||||
ОповещениеПользователю("Прогон тестов завершен", "Завершено выполнение тестов");
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Функция ВыделенныеТестовыеМодули()
|
||||
|
||||
МодулиКЗапуску = Новый Массив();
|
||||
|
||||
ВыделенныеСтроки = Элементы.ДеревоТестов.ВыделенныеСтроки;
|
||||
|
||||
Если ВыделенныеСтроки.Количество() = 0 Тогда
|
||||
Возврат МодулиКЗапуску;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Модуль Из ИсполняемыеТестовыеМодули Цикл
|
||||
|
||||
НаборыКЗапуску = Новый Массив();
|
||||
|
||||
Для Каждого Набор Из Модуль.НаборыТестов Цикл
|
||||
|
||||
Если ВыделенныеСтроки.Найти(Набор.Идентификатор) <> Неопределено Тогда
|
||||
НаборыКЗапуску.Добавить(Набор);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ТестыКЗапуску = Новый Массив();
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
Если ВыделенныеСтроки.Найти(Тест.Идентификатор) <> Неопределено Тогда
|
||||
ТестыКЗапуску.Добавить(Тест);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ТестыКЗапуску.Количество() Тогда
|
||||
ЗапускаемыйНабор = ЮТОбщий.СкопироватьСтруктуру(Набор);
|
||||
ЗапускаемыйНабор.Тесты = ТестыКЗапуску;
|
||||
НаборыКЗапуску.Добавить(ЗапускаемыйНабор);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НаборыКЗапуску.Количество() Тогда
|
||||
|
||||
ЗапускаемыйМодуль = ЮТОбщий.СкопироватьСтруктуру(Модуль);
|
||||
ЗапускаемыйМодуль.НаборыТестов = НаборыКЗапуску;
|
||||
МодулиКЗапуску.Добавить(ЗапускаемыйМодуль);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МодулиКЗапуску;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Функция МодулиСоответствующиеСтатусу(Статусы)
|
||||
|
||||
МодулиКЗапуску = Новый Массив();
|
||||
|
||||
ВыделенныеСтроки = Элементы.ДеревоТестов.ВыделенныеСтроки;
|
||||
|
||||
Если ВыделенныеСтроки.Количество() = 0 Тогда
|
||||
Возврат МодулиКЗапуску;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого Модуль Из ИсполняемыеТестовыеМодули Цикл
|
||||
|
||||
НаборыКЗапуску = Новый Массив();
|
||||
|
||||
Для Каждого Набор Из Модуль.НаборыТестов Цикл
|
||||
|
||||
ТестыКЗапуску = Новый Массив();
|
||||
|
||||
Для Каждого Тест Из Набор.Тесты Цикл
|
||||
Если Статусы.Найти(Тест.Статус) <> Неопределено Тогда
|
||||
ТестыКЗапуску.Добавить(Тест);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если ТестыКЗапуску.Количество() Тогда
|
||||
ЗапускаемыйНабор = ЮТОбщий.СкопироватьСтруктуру(Набор);
|
||||
ЗапускаемыйНабор.Тесты = ТестыКЗапуску;
|
||||
НаборыКЗапуску.Добавить(ЗапускаемыйНабор);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Если НаборыКЗапуску.Количество() Тогда
|
||||
|
||||
ЗапускаемыйМодуль = ЮТОбщий.СкопироватьСтруктуру(Модуль);
|
||||
ЗапускаемыйМодуль.НаборыТестов = НаборыКЗапуску;
|
||||
МодулиКЗапуску.Добавить(ЗапускаемыйМодуль);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат МодулиКЗапуску;
|
||||
|
||||
КонецФункции
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ВыполнитьЗапускТестовПоПараметрам(ПараметрыЗапуска, Обработчик)
|
||||
|
||||
ЮТИсполнительКлиент.ВыполнитьМодульноеТестированиеПоНастройке(ПараметрыЗапуска, Обработчик);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ПараметрыЗапуска
|
||||
|
||||
&НаКлиенте
|
||||
Функция ПараметрыЗапуска()
|
||||
|
||||
ПараметрыЗапуска = ЮТФабрика.ПараметрыЗапуска();
|
||||
ПараметрыЗапуска.closeAfterTests = Ложь;
|
||||
ПараметрыЗапуска.showReport = Ложь;
|
||||
ПараметрыЗапуска.ВыполнятьМодульноеТестирование = Истина;
|
||||
|
||||
Возврат ПараметрыЗапуска;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
&НаКлиенте
|
||||
Процедура ОбновитьДоступностьСравнения()
|
||||
|
||||
@ -356,4 +685,74 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПослеВодаКоличестваИтерацийЗамера(Результат, ДополнительныеПараметры) Экспорт
|
||||
|
||||
Если НЕ ЗначениеЗаполнено(Результат) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыЗамера = Новый Структура();
|
||||
ПараметрыЗамера.Вставить("ПараметрыЗапуска", ПараметрыЗапуска());
|
||||
ПараметрыЗамера.Вставить("КоличествоИтераций", Результат);
|
||||
ПараметрыЗамера.Вставить("ТекущаяИтерация", 0);
|
||||
ПараметрыЗамера.Вставить("Замеры", Новый Массив());
|
||||
ПараметрыЗамера.Вставить("НачалоИтерации");
|
||||
|
||||
ПослеВыполненияИтерации(Неопределено, ПараметрыЗамера);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ПослеВыполненияИтерации(Результат, ПараметрыЗамера) Экспорт
|
||||
|
||||
Если ПараметрыЗамера.ТекущаяИтерация > 0 Тогда
|
||||
Длительность = ТекущаяУниверсальнаяДатаВМиллисекундах() - ПараметрыЗамера.НачалоИтерации;
|
||||
ПараметрыЗамера.Замеры.Добавить(Длительность);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЮТОбщий.Инкремент(ПараметрыЗамера.ТекущаяИтерация) <= ПараметрыЗамера.КоличествоИтераций Тогда
|
||||
|
||||
Обработчик = Новый ОписаниеОповещения("ПослеВыполненияИтерации", ЭтотОбъект, ПараметрыЗамера);
|
||||
ПараметрыЗамера.НачалоИтерации = ТекущаяУниверсальнаяДатаВМиллисекундах();
|
||||
ВыполнитьЗапускТестовПоПараметрам(ПараметрыЗамера.ПараметрыЗапуска, Обработчик);
|
||||
|
||||
Иначе
|
||||
|
||||
ОбщееВремя = 0;
|
||||
Для Каждого Замер Из ПараметрыЗамера.Замеры Цикл
|
||||
ЮТОбщий.Инкремент(ОбщееВремя, Замер);
|
||||
КонецЦикла;
|
||||
|
||||
Список = Новый СписокЗначений();
|
||||
Список.ЗагрузитьЗначения(ПараметрыЗамера.Замеры);
|
||||
Список.СортироватьПоЗначению();
|
||||
|
||||
ОбщееВремя = Окр(ОбщееВремя / 1000, 2);
|
||||
СреднееВремя = Окр(ОбщееВремя / ПараметрыЗамера.Замеры.Количество(), 2);
|
||||
МедианноеВремя = Окр(Список[Цел(Список.Количество() / 2) + 1].Значение / 1000, 2);
|
||||
|
||||
Сообщение = СтрШаблон("Количество итераций: %1
|
||||
|Общее время: %2 сек
|
||||
|Среднее время: %3 сек
|
||||
|Медианное время: %4 сек", ПараметрыЗамера.Замеры.Количество(), ОбщееВремя, СреднееВремя, МедианноеВремя);
|
||||
|
||||
ЮТОбщий.СообщитьПользователю(Сообщение);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
&НаКлиенте
|
||||
Процедура ОповещениеПользователю(Текст, Пояснение)
|
||||
|
||||
ПоказатьОповещениеПользователя(Текст,
|
||||
,
|
||||
Пояснение,
|
||||
БиблиотекаКартинок.ЮТПодсистема,
|
||||
СтатусОповещенияПользователя.Важное,
|
||||
УникальныйИдентификатор);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -517,7 +517,7 @@
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ВыводЛога</name>
|
||||
<id>66</id>
|
||||
<id>26</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
@ -659,6 +659,49 @@
|
||||
<currentRowUse>DontUse</currentRowUse>
|
||||
</extInfo>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ЛогированиеВКонсоль</name>
|
||||
<id>84</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<dataPath xsi:type="form:DataPath">
|
||||
<segments>ЛогированиеВКонсоль</segments>
|
||||
</dataPath>
|
||||
<extendedTooltip>
|
||||
<name>ЛогированиеВКонсольРасширеннаяПодсказка</name>
|
||||
<id>86</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<type>Label</type>
|
||||
<autoMaxWidth>true</autoMaxWidth>
|
||||
<autoMaxHeight>true</autoMaxHeight>
|
||||
<extInfo xsi:type="form:LabelDecorationExtInfo">
|
||||
<horizontalAlign>Left</horizontalAlign>
|
||||
</extInfo>
|
||||
</extendedTooltip>
|
||||
<contextMenu>
|
||||
<name>ЛогированиеВКонсольКонтекстноеМеню</name>
|
||||
<id>85</id>
|
||||
<visible>true</visible>
|
||||
<enabled>true</enabled>
|
||||
<userVisible>
|
||||
<common>true</common>
|
||||
</userVisible>
|
||||
<autoFill>true</autoFill>
|
||||
</contextMenu>
|
||||
<type>CheckBoxField</type>
|
||||
<editMode>Enter</editMode>
|
||||
<showInHeader>true</showInHeader>
|
||||
<headerHorizontalAlign>Left</headerHorizontalAlign>
|
||||
<showInFooter>true</showInFooter>
|
||||
<extInfo xsi:type="form:CheckBoxFieldExtInfo"/>
|
||||
</items>
|
||||
<items xsi:type="form:FormField">
|
||||
<name>ФайлКонфигурации</name>
|
||||
<id>55</id>
|
||||
@ -1073,7 +1116,7 @@
|
||||
<name>ИмяФайлаЛога</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Отладочные сообщения</value>
|
||||
<value>Логирование в файл</value>
|
||||
</title>
|
||||
<id>61</id>
|
||||
<valueType>
|
||||
@ -1152,6 +1195,23 @@
|
||||
<segments>ИмяФайлаОтчета</segments>
|
||||
</settingsSavedData>
|
||||
</attributes>
|
||||
<attributes>
|
||||
<name>ЛогированиеВКонсоль</name>
|
||||
<title>
|
||||
<key>ru</key>
|
||||
<value>Логирование в консоль</value>
|
||||
</title>
|
||||
<id>66</id>
|
||||
<valueType>
|
||||
<types>Boolean</types>
|
||||
</valueType>
|
||||
<view>
|
||||
<common>true</common>
|
||||
</view>
|
||||
<edit>
|
||||
<common>true</common>
|
||||
</edit>
|
||||
</attributes>
|
||||
<formCommands>
|
||||
<name>УстановитьФлажки</name>
|
||||
<title>
|
||||
|
@ -323,8 +323,7 @@
|
||||
#КонецЕсли
|
||||
ПутьЗапускаемогоКлиента = ЮТФайлы.ОбъединитьПути(КаталогПрограммы(), Файл);
|
||||
|
||||
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 Или СистемнаяИнформация.ТипПлатформы
|
||||
= ТипПлатформы.Windows_x86_64 Тогда
|
||||
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 Или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
|
||||
ПутьЗапускаемогоКлиента = ПутьЗапускаемогоКлиента + ".exe";
|
||||
КонецЕсли;
|
||||
|
||||
@ -427,8 +426,8 @@
|
||||
Конфигурация.closeAfterTests = Истина;
|
||||
Конфигурация.reportPath = ИмяФайлаОтчета;
|
||||
|
||||
Конфигурация.logging.enable = ЗначениеЗаполнено(ИмяФайлаЛога);
|
||||
Конфигурация.logging.file = ИмяФайлаЛога;
|
||||
Конфигурация.logging.console = ЛогированиеВКонсоль;
|
||||
|
||||
Если ЗначениеЗаполнено(ИмяФайлаКодаВозврата) Тогда
|
||||
Конфигурация.exitCode = ИмяФайлаКодаВозврата;
|
||||
@ -538,6 +537,7 @@
|
||||
ДобавитьОтмеченныеТесты(Строка.ПолучитьЭлементы(), Тесты);
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<mdclass:DataProcessor xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c1bdc484-8502-4c5d-bead-0a5861739c3c">
|
||||
<mdclass:DataProcessor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:core="http://g5.1c.ru/v8/dt/mcore" xmlns:mdclass="http://g5.1c.ru/v8/dt/metadata/mdclass" uuid="c1bdc484-8502-4c5d-bead-0a5861739c3c">
|
||||
<producedTypes>
|
||||
<objectType typeId="5b4ab199-21bb-4d2c-9b3f-76400ff90d09" valueTypeId="46e26617-02e4-4719-87a0-982b4820504f"/>
|
||||
<managerType typeId="cea40759-07dd-409f-8c26-be7e738c7fbe" valueTypeId="e3a7e7ca-1e0d-4fdf-9390-258825a6bba5"/>
|
||||
@ -7,9 +7,8 @@
|
||||
<name>ЮТЮнитТесты</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Юнит тесты</value>
|
||||
<value>Юнит-тесты</value>
|
||||
</synonym>
|
||||
<useStandardCommands>true</useStandardCommands>
|
||||
<defaultForm>DataProcessor.ЮТЮнитТесты.Form.Основная</defaultForm>
|
||||
<forms uuid="c3c0fc7f-1c5e-47d9-b103-201517e2c100">
|
||||
<name>Основная</name>
|
||||
@ -54,4 +53,25 @@
|
||||
</synonym>
|
||||
<templateType>TextDocument</templateType>
|
||||
</templates>
|
||||
<commands uuid="38dff93f-270f-4fd9-9d79-aa529d5c4f89">
|
||||
<name>ЗапускТестов</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Запуск тестирования</value>
|
||||
</synonym>
|
||||
<group>NavigationPanelImportant</group>
|
||||
<representation>PictureAndText</representation>
|
||||
<picture xsi:type="core:PictureRef">
|
||||
<picture>CommonPicture.ЮТПодсистема</picture>
|
||||
</picture>
|
||||
</commands>
|
||||
<commands uuid="608d6673-e26c-4216-bc5f-fc19acdc3baf">
|
||||
<name>СформироватьНастройкиТестирования</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>Сформировать настройки тестирования</value>
|
||||
</synonym>
|
||||
<group>NavigationPanelOrdinary</group>
|
||||
<representation>Auto</representation>
|
||||
</commands>
|
||||
</mdclass:DataProcessor>
|
||||
|
@ -8,6 +8,7 @@
|
||||
<includeHelpInContents>true</includeHelpInContents>
|
||||
<includeInCommandInterface>true</includeInCommandInterface>
|
||||
<content>CommonModule.МокитоСлужебный</content>
|
||||
<content>CommonModule.ЮТИсполнительКлиент</content>
|
||||
<content>CommonModule.ЮТЛогирование</content>
|
||||
<content>CommonModule.ЮТТестовыеДанныеСлужебный</content>
|
||||
<content>CommonModule.ЮТУтверждения</content>
|
||||
|
@ -40,7 +40,7 @@
|
||||
Дельта = ТекущаяУниверсальнаяДатаВМиллисекундах() - Начало;
|
||||
|
||||
ЮТест.ОжидаетЧто(Дельта)
|
||||
.МеждуИсключаяГраницы(3000, 3050);
|
||||
.МеждуИсключаяГраницы(3000, 3200);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
|
@ -29,6 +29,7 @@
|
||||
.ДобавитьСерверныйТест("СтруктурыТабличногоДокумента")
|
||||
.ДобавитьСерверныйТест("ТаблицаЗначенийИзТабличногоДокумента")
|
||||
.ДобавитьСерверныйТест("ТаблицаЗначенийИзТаблицыMarkDown")
|
||||
.ДобавитьТест("СлучайныйИдентификатор")
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
@ -91,6 +92,22 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура СлучайныйИдентификатор() Экспорт
|
||||
|
||||
Проверка = Новый Структура();
|
||||
|
||||
Для Инд = 1 По 100 Цикл
|
||||
|
||||
Идентификатор = ЮТест.Данные().СлучайныйИдентификатор(Инд);
|
||||
|
||||
ЮТест.ОжидаетЧто(Проверка)
|
||||
.Метод("Вставить").Параметр(Идентификатор)
|
||||
.НеВыбрасываетИсключение(, "Сформирован не валидный идентификатор: " + Идентификатор);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#Если Сервер Тогда
|
||||
|
||||
Процедура СтруктурыТабличногоДокумента() Экспорт
|
||||
@ -116,7 +133,7 @@
|
||||
.Свойство("[2].Цена").Равно("1000000")
|
||||
.Свойство("[2].Количество").Равно("1")
|
||||
.Свойство("[2].Сумма").Равно("1000000")
|
||||
;
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -143,9 +160,9 @@
|
||||
// Вызов тестируемого сценария
|
||||
|
||||
ТаблицаРезультатов = ЮТест.Данные().ТаблицаЗначенийИзТабличногоДокумента(
|
||||
ИсходныеДанные,
|
||||
ИсходныеДанные,
|
||||
ОписанияТипов,
|
||||
КэшЗначений,
|
||||
КэшЗначений,
|
||||
ЗаменяемыеЗначения
|
||||
);
|
||||
|
||||
@ -172,7 +189,7 @@
|
||||
.Свойство("[2].Товар.Описание").Заполнено()
|
||||
.Свойство("[2].Количество").Равно(1)
|
||||
.Свойство("[2].Цена").Равно(1000000)
|
||||
;
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
@ -180,7 +197,7 @@
|
||||
|
||||
// Подготовка тестового окружения
|
||||
|
||||
ИсходныеДанные =
|
||||
ИсходныеДанные =
|
||||
"| Товар | Цена | Количество | Сумма |
|
||||
||---------|-------|------------|-------|
|
||||
|| Товар 1 | 100 | 1 | 100 |
|
||||
@ -197,7 +214,7 @@
|
||||
// Вызов тестируемого сценария
|
||||
|
||||
ТаблицаРезультатов = ЮТест.Данные().ТаблицаЗначенийИзТаблицыMarkDown(
|
||||
ИсходныеДанные,
|
||||
ИсходныеДанные,
|
||||
ОписанияТипов
|
||||
);
|
||||
|
||||
@ -218,10 +235,10 @@
|
||||
.Свойство("[2].Количество").Равно(1)
|
||||
.Свойство("[2].Цена").Равно(300.9)
|
||||
.Свойство("[2].Сумма").Равно(300.9)
|
||||
;
|
||||
;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецЕсли
|
||||
#КонецЕсли
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user