« PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか | トップページ | デブサミ2023の感想 »

2023/02/01

ChatGPTにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法を聞いた

15年以上前にEclipseでdjunitでカバレッジを出力していろいろ試していた。

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カバレッジをいい感じで出力してくれるのでありがたい。

Jacoco_report1

Jacoco_report2

Jacoco_report3

|

« PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか | トップページ | デブサミ2023の感想 »

ソフトウェア工学」カテゴリの記事

Java」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



« PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか | トップページ | デブサミ2023の感想 »