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=dotsJUnit XML レポーター
CI/CD 環境のために、Bun は JUnit XML レポートの生成をサポートしています。JUnit XML は、GitLab、Jenkins など、多くの CI/CD システムで解析できるテスト結果の広く採用されている形式です。
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 レポーターは、利用可能な場合、XML 出力の <properties> として環境情報を自動的に含めます。これは、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 ワークフロー設定の例については、CLI ドキュメントの CI/CD 統合 セクションを参照してください。
カスタムレポーター
Bun は、テスト固有のドメインを追加して WebKit インスペクタープロトコルを拡張することにより、開発者がカスタムテストレポーターを実装することを可能にします。
テスト用のインスペクタープロトコル
テストレポートをサポートするために、Bun は標準の WebKit インスペクタープロトコルを 2 つのカスタムドメインで拡張しています。
- TestReporter: テストの発見、実行開始、完了イベントをレポートします
- LifecycleReporter: テスト実行中のエラーと例外をレポートします
これらの拡張機能により、テスト実行に関する詳細な情報をリアルタイムで受信できるカスタムレポートツールを構築できます。
主要なイベント
カスタムレポーターは、次の主要なイベントをリッスンできます。
TestReporter.found: テストが発見されたときに発行されますTestReporter.start: テストの実行が開始されたときに発行されますTestReporter.end: テストが完了したときに発行されますConsole.messageAdded: テスト中にコンソール出力が発生したときに発行されますLifecycleReporter.error: エラーまたは例外が発生したときに発行されます