Skip to content

bun test поддерживает различные форматы вывода через репортёров. Этот документ охватывает как встроенные репортёры, так и способы реализации ваших собственных пользовательских репортёров.


Встроенные репортёры

Консольный репортёр по умолчанию

По умолчанию bun test выводит результаты в консоль в читаемом формате:

sh
test/package-json-lint.test.ts:
 test/package.json [0.88ms]
 test/js/third_party/grpc-js/package.json [0.18ms]
 test/js/third_party/svelte/package.json [0.21ms]
 test/js/third_party/express/package.json [1.05ms]

 4 pass
 0 fail
 4 expect() calls
Ran 4 tests in 1.44ms

Когда терминал не поддерживает цвета, вывод избегает не-ASCII символов:

sh
test/package-json-lint.test.ts:
(pass) test/package.json [0.48ms]
(pass) test/js/third_party/grpc-js/package.json [0.10ms]
(pass) test/js/third_party/svelte/package.json [0.04ms]
(pass) test/js/third_party/express/package.json [0.04ms]

 4 pass
 0 fail
 4 expect() calls
Ran 4 tests across 1 files. [0.66ms]

Репортёр точек

Репортёр точек показывает . для прошедших тестов и F для неудач — полезно для больших наборов тестов.

sh
bun test --dots
bun test --reporter=dots

Репортёр JUnit XML

Для сред CI/CD Bun поддерживает генерацию отчётов JUnit XML. JUnit XML — широко используемый формат для результатов тестов, который может быть обработан многими системами CI/CD, включая GitLab, Jenkins и другие.

Использование репортёра JUnit

Для генерации отчёта JUnit XML используйте флаг --reporter=junit вместе с --reporter-outfile для указания выходного файла:

sh
bun test --reporter=junit --reporter-outfile=./junit.xml

Это продолжает выводить в консоль как обычно, одновременно записывая отчёт JUnit XML в указанный путь в конце запуска тестов.

Конфигурация через bunfig.toml

Вы также можете настроить репортёр JUnit в вашем файле bunfig.toml:

toml
[test.reporter]
junit = "path/to/junit.xml"  # Путь вывода для отчёта JUnit XML

Переменные окружения в отчётах JUnit

Репортёр JUnit автоматически включает информацию об окружении как <properties> в выводе XML. Это может быть полезно для отслеживания запусков тестов в средах CI.

В частности, он включает следующие переменные окружения, когда они доступны:

Переменная окруженияИмя свойстваОписание
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URLciИнформация о сборке CI
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHAcommitИдентификаторы коммита Git
Системное имя хостаhostnameИмя хоста машины

Это упрощает отслеживание того, для какого окружения и коммита был конкретный запуск теста.

Текущие ограничения

Репортёр JUnit в настоящее время имеет несколько ограничений, которые будут устранены в будущих обновлениях:

  • Вывод stdout и stderr отдельных тестов не включён в отчёт
  • Точные поля временных меток для каждого тестового случая не включены

Репортёр GitHub Actions

Bun test автоматически определяет, когда он работает внутри GitHub Actions, и выводит аннотации GitHub Actions непосредственно в консоль. Никакой специальной настройки не требуется, кроме установки Bun и запуска bun test.

Для примера конфигурации рабочего процесса GitHub Actions см. раздел Интеграция с CI/CD документации CLI.


Пользовательские репортёры

Bun позволяет разработчикам реализовывать пользовательские тестовые репортёры, расширяя WebKit Inspector Protocol дополнительными доменами, специфичными для тестирования.

Inspector Protocol для тестирования

Для поддержки отчётности о тестах Bun расширяет стандартный WebKit Inspector Protocol двумя пользовательскими доменами:

  1. TestReporter: Сообщает события обнаружения тестов, начала выполнения и завершения
  2. LifecycleReporter: Сообщает об ошибках и исключениях во время выполнения теста

Эти расширения позволяют вам создавать пользовательские инструменты отчётности, которые могут получать подробную информацию о выполнении тестов в реальном времени.

Ключевые события

Пользовательские репортёры могут прослушивать следующие ключевые события:

  • TestReporter.found: Испускается при обнаружении теста
  • TestReporter.start: Испускается при запуске теста
  • TestReporter.end: Испускается при завершении теста
  • Console.messageAdded: Испускается при выводе консоли во время теста
  • LifecycleReporter.error: Испускается при возникновении ошибки или исключения

Bun от www.bunjs.com.cn