2

Sonar のコード カバレッジが 0% を示していますが、これは単体テストがあるため正しくありません。

グラドル

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"
  }
}

index.html内部build/reports/tests/releaseを開くと、成功した単体テストが表示されます。

私は Jenkins 環境内で実行sonarqubeしています。gradle task私の SonarQube インスタンスにはCode Smells、 と 以外のすべてが表示されcode coverage0%が表示されます。

アップデート

私は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"
    }
}
4

2 に答える 2

2

SonarQube ドキュメントからの抜粋:

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

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 呼び出しに追加することにより)。次に、ディレクトリsonar.jacoco.reportPathを指すように設定して、SonarQube がテスト レポートの正しい場所を検索していることを確認する必要があります (既定ではに設定されているため、既定の設定ではレポートが見つかりません)。/reports/jacocotarget/jacoco.exec

于 2016-07-08T17:40:28.277 に答える
1

このプラグインを使用して問題を修正しました。androidTests私が見た問題は、Jacoco がUnit Tests ではなくInstrumentation Tests を探していたことですtests。私が使用したプラグインは、事前にテストを実行し、テストに基づいてレポートを作成し、Jacoco がそれらのテストを指すようにしました。

于 2016-07-11T13:27:18.077 に答える