Skip to content
Latchkey

JUnitレポートとは?

JUnitレポートは、テスト結果 - どのテストが実行され、どれが通過し、どれが失敗し、どれだけ時間がかかったか - を記述する標準XMLファイルです。

名前に反して、JUnit XML形式はJavaをはるかに超えて使われています。これは、さまざまな言語のtest runnerが出力し、CIプラットフォームが結果表示のためにparseする事実上の標準となり、ツールがフレームワークごとにparserを必要としないようにしています。

含まれる内容

JUnit XMLは、test suiteとtest caseを、そのステータス(通過、失敗、スキップ)、所要時間、失敗メッセージやスタックトレースとともに列挙します。ほとんどのフレームワークは、直接またはreporterプラグイン経由でそれを出力できます。

CIが好む理由

形式が標準であるため、CIプラットフォームはpytest、Jest、Go、PHPUnitなど何十ものものからの結果を同じ方法で取り込めます - テストごとのステータスをレンダリングし、失敗を浮かび上がらせ、実行をまたいでflakyなテストを追跡します。

小さな例

pytest --junitxml=results.xml を実行すると、<testsuite><testcase> 要素を持つファイルが生成されます。CIのtest-reporterのstepがそれを読み取り、生の出力をスクロールする代わりに、失敗した各caseをそのメッセージとともにレンダリングします。

生成方法

runnerがJUnit XMLを出力するよう設定し、それをuploadするか、CIのtest-reportingのstepにそれを指し示します。プラットフォームはそれを読みやすい結果ビューにparseし、多くの場合pull requestで失敗した行にアノテーションを付けます。

形式の限界

JUnit XMLには単一の正式なschemaがないため、ツール間で方言がわずかに異なります。ほとんどの消費側は寛容ですが、風変わりなフィールドは無視されることがあります - 移植性のため、共通の要素(suite、case、failure、duration)に留めてください。

重要なポイント

  • JUnit XMLはテスト結果のための言語横断的な標準形式です。
  • テストごとのステータス、タイミング、失敗の詳細を記録します。
  • その普遍性により、1つのCI連携で多くのフレームワークを扱えます。

関連ガイド