Тестирование

July 10, 2026 · View on GitHub

Расширение интегрирует тесты 1С с нативной панелью Тестирование VS Code (Test Explorer): дерево тестов с иерархией каталогов, кнопки запуска в редакторе, зелёные/красные статусы и переход к месту падения.

Панель тестирования

Поддерживаемые фреймворки

ФреймворкЧто в деревеЗапускРезультаты
Vanessa Automation.feature → сценарииvrunner vanessa --path <файл>jUnit или Cucumber JSON из настроек VA проекта
xUnit / Vanessa-ADDисходники тестовых обработок → методыvrunner xunit <.epf> (обработка собирается автоматически)jUnit из активного профиля (секция xunit, reportsxunit)
YAxUnitмодули тестового расширения → тестыvrunner run --command RunUnitTests=<конфиг>jUnit из tools/yaxunit.json
OneScript.os-тесты (ИсполняемыеСценарии или аннотации &Тест / &ПараметризованныйТест)1testrunner -run ... xddReportPath / oneunit execute --junitjUnit в build/out/onescript
1bdd.feature в OneScript-проектах1bdd exec -junit-outjUnit в build/out/1bdd

Все фреймворки включены по умолчанию; состав можно менять командой Настроить тесты (кнопка «Настроить тесты 1С» в пустой панели тестирования) или настройками 1c-platform-tools.testing.frameworks.*. Каталог фич принадлежит Vanessa в проектах 1С (есть исходники конфигурации) и 1bdd — в OneScript-библиотеках. Файлы .os — всегда OneScript: тесты для 1С (xUnit) существуют только как внешние обработки.

Точечный запуск отдельного теста поддерживают YAxUnit, OneScript (1testrunner/OneUnit) и 1bdd. Для Vanessa и xUnit CLI запускает файл целиком — статусы всех кейсов файла обновляются из отчёта.

Параметризованные тесты OneUnit (&ПараметризованныйТест + &ИсточникЗначение) разворачиваются в отдельный кейс на каждый набор значений; имя кейса совпадает с отчётом (по умолчанию [значение], напр. [ibcmd]). Точечный запуск такого кейса выполняет процедуру целиком (раннер прогоняет все её наборы значений). Наборы значений из &ИсточникJSON/&ИсточникВыражение/&ИсточникПеречисление известны только в рантайме — такой тест показывается одним кейсом по имени метода. Когда несколько процедур в файле дают одинаковые метки ([ibcmd] у обеих), рядом с кейсом подписывается имя процедуры, и результаты сопоставляются с учётом контейнера.

Структура каталогов тестов

project/
├── build/out/tests/        # СОБРАННЫЕ .epf тестов 1С (артефакт, не в git)
├── features/               # Сценарии Gherkin (Vanessa Automation / 1bdd)
├── src/
│   └── tests/              # ИСХОДНИКИ тестовых обработок 1С (формат decompileepf)
└── tests/                  # Скриптовые тесты OneScript (*.os)
  • tests/ — скриптовые тесты OneScript (1testrunner/OneUnit). Бинарники тестов здесь не хранятся: дымовые наборы Vanessa-ADD поставляются в составе пакета add (oscript_modules/add/tests/smoke);
  • src/tests/ — разобранные исходники тестовых обработок 1С, по подкаталогу на обработку. Панель тестирования показывает методы прямо из исходника и автоматически собирает обработку перед прогоном (vrunner кэширует сборку);
  • build/out/tests/ — собранные из исходников .epf: артефакт сборки, в git не попадает.

Команды сборки unit тестов

  • Собрать unit тесты (1c-platform-tools.test.buildEpf) — vrunner compileepf src/tests build/out/tests: собирает все тестовые обработки из исходников в .epf.
  • Разобрать unit тесты (1c-platform-tools.test.decompileEpf) — vrunner decompileepf tests src/tests: раскладывает хранимые бинарники в исходники — удобно для первичного переноса под контроль версий.

Обе доступны из дерева команд (группа «Внешние файлы», рядом со сборкой обработок и отчётов) и палитры.

Конфигурация проекта

Расширение использует служебные файлы проекта и не генерирует свои. Все прогоны идут под активным профилем запуска: его --settings подставляется централизованно, а пути отчётов и параметров читаются из файла профиля с учётом схемы (плоские секции в env.json, каскад vrunner.test.* в autumn-properties.json).

  • профиль — секции vanessa (vanessasettings) и xunit (reportsxunit — отсюда берётся путь jUnit-отчёта);
  • tools/VAParams.json — какие отчёты пишет Vanessa Automation (jUnit или Cucumber JSON) и куда;
  • tools/yaxunit.json — базовый конфиг RunUnitTests; панель накладывает на него фильтр по выбранному модулю/тесту.

Если конфиги не настроены, используются временные настройки с отчётом в testing.reportsPath.

Настройки

НастройкаПо умолчаниюОписание
testing.enabledtrueИнтеграция с панелью тестирования
paths.testsSrcsrc/testsИсходники тестовых обработок (xUnit)
paths.teststestsСкриптовые тесты OneScript (*.os)
testing.featuresPathfeaturesСценарии Gherkin
testing.onescriptTestsPathtestsТесты OneScript
testing.frameworks.*включеныВключение фреймворков (через «Настроить тесты»)
testing.exclude["oscript_modules", "build"]Сегменты пути, исключаемые при поиске тестов
testing.onescriptRunnerautoРаннер OneScript: auto / 1testrunner / oneunit
testing.onescriptRunnerPath, testing.onebddPathПути к раннерам (поддерживают относительные)
testing.yaxunitConfigPathtools/yaxunit.jsonБазовый конфиг YAxUnit
testing.reportsPathbuild/out/testapiВременные файлы прогонов

Особенности

  • Прогоны выполняются последовательно — информационная база одна.
  • Отмена прогона завершает всё дерево процессов (включая 1cv8).
  • Команды группы «Тестирование» в дереве инструментов (XUnit, Vanessa, YAxUnit, синтаксический контроль, Allure) остаются прежним способом запуска «всего сразу» в терминале.
  • Allure отчёт собирает результаты всех фреймворков: команда сканирует build/out и берёт все существующие источники — allure-каталоги (smoke, syntax-check, VA), jUnit (yaxunit, onescript, 1bdd) и Cucumber JSON (VA); дубли одного прогона в двух форматах исключаются.

Синтаксический контроль в панели Problems

Ошибки vrunner syntax-check собираются в панель Problems и подсвечиваются в файлах модулей.

  • Источник — jUnit-отчёт прогона; путь берётся из файла активного профиля запуска (схемо-независимо: секция syntax-check / каскад vrunner.validate.syntax-check, опция junitpath), с откатом на build/out/syntax-check/junit/junit.xml.
  • Обновление автоматическое: расширение следит за файлом отчёта и перечитывает его после каждого прогона (повторный прогон обновляет/очищает диагностику). Смена активного профиля или правка его env-файла пересобирают путь к отчёту.
  • Путь по метаданным из отчёта (ОбщийМодуль.Имя.Модуль) сопоставляется с файлом .bsl в выгрузке src/cf. Записи, не раскладывающиеся в модуль (справка, неизвестные типы), собираются на Configuration.xml с указанием пути в тексте.
  • Номера строк vrunner не выдаёт, поэтому позиция ищется по идентификатору метода из текста ошибки (например "Существует"): каждое вхождение в модуле подсвечивается отдельно. Если идентификатор не извлечь/не найти — ошибка ставится в начало файла.
  • Команды палитры: Синтаксический контроль: обновить ошибки в Problems и … очистить ошибки в Problems. Ручное обновление полезно, если каталог build исключён из слежения (files.watcherExclude) и автоматическое обновление не срабатывает.