🕒 学習時間
21:00~21:30
🧑💻 実施した学習内容
1. 疑問点
JUnit5のテストレポートの作成方法
2. 技術の概要
◾️何をするものか
JUnit5のテストレポートとは、テスト実行結果(成功・失敗・スキップ・実行時間など)を可視化・記録する仕組み。
◾️背景・目的(なぜ必要か)
- テストは「書くだけ」では意味がない
- 実行結果を人間が理解できる形で残す必要がある
- CI/CD(継続的インテグレーション)では品質の可視化が必須
→ 「どのテストが落ちたか」「なぜ落ちたか」を即座に把握するため
3. 内容
JUnit5単体では「簡易的なレポート」しか出ないため、実務では以下の3層で扱う
① コンソールレポート
- 実行時に標準出力に表示
例:
Tests run: 10, Failures: 1, Skipped: 0
② XMLレポート
- CIツール(Jenkinsなど)が読み取るための形式
- Maven/Gradleで自動生成される
③ HTMLレポート(実務で最重要)
- 人間が見るためのUI付きレポート
- 代表例:
- Surefire Report
- Allure Report
■ Mavenの場合の出力先
target/surefire-reports/
■ Gradleの場合
build/reports/tests/test/index.html
→右クリック→開く→ブラウザ→ビルドインプレビュー
■ レポートに含まれる情報
- テストクラス名
- テストメソッド名
- 実行結果(SUCCESS / FAILED / SKIPPED)
- 実行時間(ms単位)
- スタックトレース
- 入力パラメータ(ParameterizedTest)
4. 用語定義
- テストレポート: テスト結果の記録
- CI: 継続的インテグレーション(自動ビルド・テスト)
- スタックトレース: エラー発生箇所の履歴
- Surefire: Mavenのテスト実行プラグイン
5. 解決する課題・メリット
- 不具合の早期発見
- 回帰テストの自動化
- 品質の可視化
- チーム内共有が容易
- CI/CDと連携可能
6. 使用する注意事項・デメリット
- JUnit単体では見づらい(HTML必須)
- ログが多すぎると逆に読みにくい
- テスト名が適当だと意味不明になる
- flaky test(不安定テスト)が混じると信頼性低下
7. 類似技術との比較
| 技術 | 特徴 | 用途 | 可視化 |
|---|---|---|---|
| JUnit5標準 | シンプル | 開発時 | △ |
| Surefire | Maven標準 | CI連携 | ○ |
| Allure | 高機能UI | 本格運用 | ◎ |
| JaCoCo | カバレッジ測定 | 品質分析 | ◎ |
8. 根拠の掲示
◾️[公式ドキュメント]
https://junit.org/junit5/docs/current/user-guide/
◾️[参考にした記事]
https://maven.apache.org/surefire/maven-surefire-plugin/
9. 次やること
- Allureレポートを導入して可視化強化
- CI(Jenkins/GitHub Actions)と連携
- カバレッジ(JaCoCo)を追加
- テスト命名規則を統一