bun test поддерживает различные форматы вывода через репортёров. Этот документ охватывает как встроенные репортёры, так и способы реализации ваших собственных пользовательских репортёров.
Встроенные репортёры
Консольный репортёр по умолчанию
По умолчанию bun test выводит результаты в консоль в читаемом формате:
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 символов:
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 для неудач — полезно для больших наборов тестов.
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 для указания выходного файла:
bun test --reporter=junit --reporter-outfile=./junit.xmlЭто продолжает выводить в консоль как обычно, одновременно записывая отчёт JUnit XML в указанный путь в конце запуска тестов.
Конфигурация через bunfig.toml
Вы также можете настроить репортёр JUnit в вашем файле bunfig.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_URL | ci | Информация о сборке CI |
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHA | commit | Идентификаторы коммита 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 двумя пользовательскими доменами:
- TestReporter: Сообщает события обнаружения тестов, начала выполнения и завершения
- LifecycleReporter: Сообщает об ошибках и исключениях во время выполнения теста
Эти расширения позволяют вам создавать пользовательские инструменты отчётности, которые могут получать подробную информацию о выполнении тестов в реальном времени.
Ключевые события
Пользовательские репортёры могут прослушивать следующие ключевые события:
TestReporter.found: Испускается при обнаружении тестаTestReporter.start: Испускается при запуске тестаTestReporter.end: Испускается при завершении тестаConsole.messageAdded: Испускается при выводе консоли во время тестаLifecycleReporter.error: Испускается при возникновении ошибки или исключения