Gradle ベースのビルドおよび統合テストを実行した後、「build/jacoco」フォルダー内に Jacoco によって 2 つの .exec ファイルを正常に生成しています。
Gradle コマンド: 「gradle clean build integrationTest」
完了すると、build/jacoco フォルダーの下に次の .exec ファイルが生成されます。
- test.exec
- integrationTest.exec
以下は私の sonar-project.properties ファイルです。Linux プロンプトから "sonar-runner" を実行すると完了しますが、このプロジェクトの SonarQube ダッシュボードでは、単体テストでは 34.5% と表示されますが、統合テストでは 0.0% と表示されます。どちらの .exec ファイルも有効なサイズです。また、.exec ファイルで「cat」を実行し、出力を Linux の「strings」コマンドにパイプして、integrationTest.exec が Tests 関数にヒットしたことを確認しました。.java ファイルは 1 つしかありません。
「gradle clean build integrationTest sonarRunner -Dxxx.xxx=yyy -Dyyy.xx=zzz」を実行すると、つまり、-D オプションを使用して sonar-project.properties ファイルに記載されているすべてのソナー変数を渡すことによって、動作しますが、同じ結果になりますSonarQube プロジェクトのダッシュボード。プロジェクトのソナー ダッシュボードには、ユニット/統合テスト用に構成された両方のウィジェットがあり、全体的なカバレッジを表示するための IT テストを含めています。全体的なカバレッジは 34.5% を示しています (これは単体テスト % 値です)。ソナーはtest.exec、integrationTest.execを認識し、この操作中にoverall-xxx.execファイルも自動生成します。
注:私はどこにもいません-別のパテ/ LinuxコンソールでTomcatを起動している間-またはGradleビルドスクリプト内で、値を提供するか、JacocoのJAVAエージェントを設定します。私はすでに integrationTest.exec ファイルと test.exec ファイルを取得しているので、IT テストの実行が完了したら JVM を停止する必要があるかどうかわかりません。.exec ファイルの有効なファイル サイズがあるので、それらは必要ないと思います。
私の ?: - 次の変数を正しく設定/渡しているにもかかわらず、ソナーがダッシュボードで IT カバレッジを取得していないのはなぜですか:
sonar.jacoco.itReportPath=build/jacoco/integrationTest.exec
-bash-3.2$ cat sonar-project.properties
# Root project information
sonar.projectKey=com:company:product:ProjectA
sonar.projectName=ProjectA
sonar.projectVersion=1.0
# optional description
sonar.projectDescription=ProjectA Service
#Tells SonarQube that the code coverage tool by unit tests is JaCoCo
sonar.java.coveragePlugin=jacoco
#Tells SonarQube to reuse existing reports for unit tests execution and coverage reports
sonar.dynamicAnalysis=reuseReports
# Some properties that will be inherited by the modules
sonar.sources=src/java,test/java,src/java-test
# Sonar Unit Test Report path
sonar.jacoco.reportPath=build/jacoco/test.exec
# Sonar Integration Test Report Path
sonar.jacoco.itReportPath=build/jacoco/integrationTest.exec
sonar.junit.reportsPath=build/UT/results
# Sonar Binaries
sonar.binaries=build/classes/main