ChatGPTにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法を聞いた
15年以上前にEclipseでdjunitでカバレッジを出力していろいろ試していた。
しかし、今のEclipseではdjunitはもう使えなくなっていた。
ChatGPTに聞いたら、代わりにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法がわかったのでメモ。
【参考】
EclEmma - Java Code Coverage for Eclipse
EclEmma - JaCoCo Java Code Coverage Library
EclEmma - Source Code Annotation
ブログエンジン(5) Maven+JaCoCoでカバレッジ計測 - afnf.net
WildFly+jacocoでintegration-testのカバレッジ取得 - Qiita
カバレッジレポートの出し方について書く ・ Issue #10 ・ syobochim/doc
JaCoCo - Command Line Interface
【前提条件】
Eclipseの実行メニューに「カバレッジ>Junit」が表示される前提とする。
表示できていれば、EclipseにEclEmma プラグインがインストールされている。
最新版のEclipseであれば既にインストール済み。
Eclipseにカバレッジ・ビューを表示するように設定するには、ウィンドウ>ビューの表示>その他 から、java>カバレッジを 選択して画面下部に表示するように設定する。
JaCoCo のZipファイルをダウンロードしておく。
EclEmma - JaCoCo Java Code Coverage Library
【EclipseにJacocoを設定する方法】
この手順書は、ChatGPTに質問して作成した。
EclipseにJacocoを設定する方法は次のようになります。
Eclipseで、JaCoCoを使用するプロジェクトを選択します。
[Run] -> [Run Configurations...]を選択し、「JUnit」に対して新しい設定を作成します。
「Arguments」タブで、「VM arguments」欄に「-javaagent:path/to/jacocoagent.jar=destfile=path/to/jacoco.exec」を追加します。
path/to/jacocoagent.jarは、JaCoCoがインストールされている場所に置き換えてください。
path/to/jacoco.execは、JaCoCoのエグゼキューションファイルを出力する場所を指定します。
「Apply」をクリックし、「Run」をクリックして、テストを実行します。
実行が終了したら、「Coverage」ビューを開き、カバレッジ結果を確認します。
注意: 上記の設定は、JUnit4を使用している場合の設定方法です。JUnit5を使用する場合は適切なアダプタを使用する必要があります。
【EclipseとJacocoを使って、カバレッジのレポートをHTMLで出力する方法】
Eclipseで、JaCoCoを使用するプロジェクトを選択します。
[Run] -> [Run Configurations...]を選択し、「JUnit」に対して新しい設定を作成します。
「Arguments」タブで、「VM arguments」欄に「-javaagent:path/to/jacocoagent.jar=destfile=path/to/jacoco.exec」を追加します。
path/to/jacocoagent.jarは、JaCoCoがインストールされている場所に置き換えてください。
path/to/jacoco.execは、JaCoCoのエグゼキューションファイルを出力する場所を指定します。
「Apply」をクリックし、「Run」をクリックして、テストを実行します。
実行が終了したら、JaCoCoのアクションツールを使用して、jacoco.execからHTMLレポートを生成します。
JaCoCoのアクションツールは、Javaコマンドラインから次のように実行できます。
java -jar path/to/jacococli.jar report path/to/jacoco.exec --classfiles path/to/classfiles --sourcefiles path/to/sourcefiles --html path/to/report
path/to/jacococli.jarは、JaCoCoのアクションツールを含むjarファイルへのパスです。
path/to/jacoco.execは、JaCoCoが生成したエグゼキューションファイルへのパスです。
path/to/classfilesは、JaCoCoを適用するクラスファイルへのパスです。
path/to/sourcefilesは、JUnit対象ソースコードへのパスです。
path/to/reportは、HTMLレポートを生成する場所を指定します。index.htmlを開けば出力結果が表示されます。
注意: 上記の設定は、JUnit4を使用している場合の設定方法です。JUnit5を使用する場合は適切なアダプタを使用する必要があります。
JaCoCo - Command Line Interface
【感想】
ChatGPTに明確な質問を書けば、的確に回答してくれる。
手順は必ず回答があるから、AIが強いだろうと思う。
WildFly+jacocoでintegration-testのカバレッジ取得 - Qiitaによれば、Missed InstructionsがC0 (命令網羅率) でMissed BranchesがC1 (条件網羅率) を表しているとのこと。
ドリルダウンすると、カバレッジを通過したパスは、
緑:実行された命令。
赤:実行されなかった命令。
黄:分岐において一部のみ実行された命令。
で表示してくれる。
カバレッジ結果のHTMLを開くと、C0/C1カバレッジをいい感じで出力してくれるのでありがたい。
| 固定リンク
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「Java」カテゴリの記事
- パッケージ原則とクラス原則の違いは何なのか(2023.10.14)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- ChatGPTにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法を聞いた(2023.02.01)
- JavaGold SE11の感想(2022.12.25)
- ComparableとComparatorの違いは何か(2022.11.20)
コメント