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 は、GitLab、Jenkins など、多くの CI/CD システムで解析できるテスト結果の広く採用されている形式です。

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 レポーターは、利用可能な場合、XML 出力の <properties> として環境情報を自動的に含めます。これは、CI 環境でテスト実行を追跡するのに役立ちます。

具体的には、次の環境変数が利用可能な場合に含まれます。

環境変数プロパティ名説明
GITHUB_RUN_ID, GITHUB_SERVER_URL, GITHUB_REPOSITORY, CI_JOB_URLciCI ビルド情報
GITHUB_SHA, CI_COMMIT_SHA, GIT_SHAcommitGit コミット識別子
システムホスト名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 つのカスタムドメインで拡張しています。

  1. TestReporter: テストの発見、実行開始、完了イベントをレポートします
  2. LifecycleReporter: テスト実行中のエラーと例外をレポートします

これらの拡張機能により、テスト実行に関する詳細な情報をリアルタイムで受信できるカスタムレポートツールを構築できます。

主要なイベント

カスタムレポーターは、次の主要なイベントをリッスンできます。

  • TestReporter.found: テストが発見されたときに発行されます
  • TestReporter.start: テストの実行が開始されたときに発行されます
  • TestReporter.end: テストが完了したときに発行されます
  • Console.messageAdded: テスト中にコンソール出力が発生したときに発行されます
  • LifecycleReporter.error: エラーまたは例外が発生したときに発行されます

Bun by www.bunjs.com.cn 編集