最近、EclipseでEclEmmaプラグインを使用して、アプリケーション内のJUnitのコードカバレッジを見つけましたが、うまく機能しました。
次のステップでは、アプリケーションで外部から呼び出されるエンドツーエンドテスト/機能テストのコードカバレッジを見つけられるようにしたいと思います(これらは別のサーバーにあります)。
基本的に、アプリケーションをjarとしてパッケージ化し(mavenを使用)、サーバーにデプロイします。そして、この場所で機能テストをトリガーできます。
この場合、コードカバレッジを見つける方法はありますか?
私の理解コードカバレッジツールが(生の言語で)どのように機能するかは、クラスをロードし、ヒットしたコードの部分に基づいてレポートを生成することです。したがって、この理解によれば、テストコードにアクセスする必要はありません。どういうわけかplugコードカバレッジツールをアプリケーションjarに挿入するだけで、このjar内のコードが呼び出されるたびに、レポートが更新されます。 私の理解は正しいですか?
注:他のツールで可能な場合は、他のコードカバレッジツールを使用できます。
エージェントをJavaコマンドラインに追加することにより、実行時にJaCoCoエージェントによってインストルメント化されたサーバー上でコードを実行できます。たとえば、プロセスが現在次のコマンドで起動されている場合:
Java -jar myApp.jar
あなたはそれをに変更することができます
Java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar
デフォルトでは、VMが終了すると、カバレッジデータがファイルjacoco.exec
に書き込まれますが、オプションでこれをオーバーライドして、TCP/IP経由でカバレッジデータを取得できます。を参照してください。 JaCoCoエージェントのドキュメント 。
次を使用して、これをレポート(HTMLなど)にフォーマットできます。
Java -jar jacococli.jar report jacoco.exec [options]
オプションについては、 JaCoCo CLIドキュメント を参照してください。
...または、EclEmmaを使用して出力を分析できます。
エージェントを使用できない本当の理由がある場合は、最後の手段として、instrument
のjacocococli
コマンドを使用して、クラスファイルをインストルメント化されたクラスファイルに静的に変換できます。これについては、 JaCoCo'Offline Instrumentation 'ドキュメント を参照してください。
JaCoCoを使用する最も基本的な方法は、エージェントを直接呼び出してjacococli.jar
を使用することです。 Mavenを使用しているため、JaCoCoMavenプラグインを使用して同じ効果の多くを取得できます。
これは私がジェンキンスパイプラインのMavenでそれをした方法です
mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test -Dmaven.test.failure.ignore=true
これにより、コードカバレッジデータを持つtarget/jacoco.exec
が作成されます。
明らかに出力を解釈することはできませんが、SonarQubeのようなツールやプラグインはそれを行うことができます(私の場合はsonarqubeを使用しました)
ただし、以下を使用して、target/site/jacoco/index.html
、target/site/jacoco/jacoco.csv
にあるhtml/csv形式に生成できます。
mvn org.jacoco:jacoco-maven-plugin:report
または
Java -jar jacococli.jar report jacoco.exec [options]
または、これを参照することもできます tutorial これはすべてpom.xml
で行いました