2016-07-08 4 views
2

ソナーのマイコードカバレッジは0%を示していますが、これは単体テストのように真実ではありません。ヤココ0%コードカバレッジ

のGradle

sonarqube { 
    properties { 
    property "sonar.binaries", "build/intermediates/classes/release" 
    property "sonar.java.binaries", "build/intermediates/classes/release" 
    property "sonar.java.test.binaries", "build/intermediates/classes/test/release" 
    property "sonar.sources", "src" 
    property "sonar.junit.reportsPath", "build/reports/tests/release" 
    property "sonar.java.junit.reportsPath", "build/reports/tests/release" 
    property "sonar.android.lint.report", "build/outputs/lint-results.xml" 
    property "sonar.jacoco.reportPath", "${project.buildDir}/jacoco/testReleaseUnitTest.exec" 
    } 
} 

私はその後、私は成功したユニットテストを見ることができますbuild/reports/tests/release内部index.htmlを開く

私はJenkins環境内でgradle taskとしてsonarqubeを実行します。 My SonarQubeのインスタンスはCode Smellsとなり、code coverage以外はすべて0%と表示されます。

更新

私はindex.htmlは、コードカバレッジのために作成されますんが、それはあまりにも0%を示しています:

app/build/reports/jacoco/jacocoTestDebugUnitTestReport/html/index.html

を更新

まだ0%になったがこれはこれまで私が持っているものです:

から
android { 
    ... 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
      testCoverageEnabled true 
     } 
     debug { 
      testCoverageEnabled true 
     } 
    } 

    jacoco { 
     version "0.7.8.201607051106" 
    } 
} 

答えて

1

thisプラグインを使用して問題を解決しました。私が見ている問題は、Jacocoがユニットテストtestsではなく、計装テストandroidTestsを探すことを試みていたことです。私が使ったプラグインは、テスト前にテストを実行し、テストに基づいてレポートを作成し、Jacocoがそれらのテストを指し示すようにしました。

2

抜粋:

のJavaプラグインは、レポートを再利用します。それらは生成されません。したがって、これらのレポートをインポートするように分析を設定する前に、レポートが正しく生成され、空でないことを確認してください。

あなたがGradle Jacoco pluginを使用していないようですので、レポートを生成していないので、SonarQubeはおそらく0%を報告しています。 Jacocoをビルドに追加し、SonarQubeに生成されたレポート(sonar.jacoco.reportPath)のパスを読み込ませるようにしておく必要があります。

プロジェクトにJacocoを追加するには、build.gradleに以下を追加する必要があります。

//... 
apply plugin: "jacoco" 
//... 
jacoco { 
    toolVersion = "0.7.6.201602180812" 
    //Note: unless "reportsDir" is set here, default is “$buildDir/reports/jacoco” 
} 

また、次のようにする必要があります:まず第一に、あなたはjacocoTestReportタスクがされていることを確認する必要があります(あなた自身のタスクにそれを加えることによって、またはあなたのgradleの呼び出しにタスクを加えることによって)実行されます。次に、SonarQubeがテストレポートの正しい場所を探していることを確認する必要があります(target/jacoco.execにデフォルト設定されているため、デフォルト設定のレポートは見つからない)/reports/jacocoディレクトリを指すように設定します。

+0

"あなたのビルドにJacocoを追加"して正確に意味するものを挙げてもらえますか? – Subby

+0

ビルドスクリプトとSonarQubeの詳細を追加しました。 –

+0

http:// stackoverflow。com/questions/18106492/gradle-jacoco-code-coverage-j-publish-show-in-jenkins – Pavan

関連する問題