bundle“app”中的类与执行数据不匹配。对于报告生成,必须使用与运行时相同的类文件

问题描述 投票:0回答:2
 Task :app:jacocoTestReport
[ant:jacocoReport] Classes in bundle 'app' do not match with execution data. For report generation the same class files must be used as at runtime.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/feature/login/viewmodel/LoginHelper does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/shared/util/ApplicationExceptionHandler does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/shared/network/PilotConnectNetworkApiService does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/demotesting/ProvideDependency does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/shared/repository/NetworkManager does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/shared/repository/PilotConnectRepository does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/feature/login/viewmodel/IcaoLoginViewModel does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/demotesting/Util does not match.
[ant:jacocoReport] Execution data for class com/honeywell/pilotconnectapp/ffapilotconnectandroidapp/feature/common/viewmodel/BaseViewModel does not match.

Jacoco.gradle

apply plugin: 'jacoco'

ext {
    coverageExclusions = [
            '**/*Activity*.*',
            '**/R.class',
            '**/R$*.class',
            '**/BuildConfig.*',
            '**/*App.*',
            '**/*Application.*',
            '**/*JsonAdapter.*',
            '**/PilotConnectApplication*.*',
            '**/Manifest*.*',
            '**/*Test*.*',
            '**/com/example/databinding/*',
            '**/com/example/generated/callback/*',
            '**/*databinding/*',
            '**/android/databinding/*',
            '**/androidx/databinding/*',
            '**/di/module/*',
            '**/*MapperImpl*.*',
            '**/*$ViewInjector*.*',
            '**/*$ViewBinder*.*',
            '**/BuildConfig.*',
            '**/*Component*.*',
            '**/*BR*.*',
            '**/Manifest*.*',
            '**/*$Lambda$*.*',
            '**/*Companion*.*',
            '**/*Module.*',
            '**/*Dagger*.*',
            '**/*MembersInjector*.*',
            '**/*_Factory*.*',
            '**/*_Provide*Factory*.*',
            '**/*Extensions*.*',
            '**/*$Result.*', /* filtering `sealed` and `data` classes */
            '**/*$Result$*.*'
    ]
}

jacoco {
    toolVersion = '0.8.7'
    reportsDir = file("$buildDir/reports")
}

tasks.withType(Test) {
    jacoco.includeNoLocationClasses = true
    // https://github.com/gradle/gradle/issues/5184#issuecomment-457865951
    jacoco.excludes = ['jdk.internal.*']
}


tasks.withType(Test) {
    finalizedBy jacocoTestReport // report is always generated after tests run
}

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest']) {
    group = "Reporting"
    description = "Generate Jacoco coverage reports for Debug build"

    reports {
        xml.required = true
        html.required = true
    }

    def mainSrc = "/src/main/java"
    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: coverageExclusions)
    def kotlinDebugTree = fileTree(dir: "${buildDir}/tmp/kotlin-classes/debug", excludes: coverageExclusions)
    additionalSourceDirs.from = files(mainSrc)
    sourceDirectories.from = files([mainSrc])
    classDirectories.from = files([kotlinDebugTree], [debugTree])
   // classDirectories.from = files([kotlinDebugTree])
    executionData.from = files("$buildDir/jacoco/testReleaseUnitTest.exec")
}
android kotlin gradle jacoco
2个回答
0
投票

如果您使用“com.google.firebase:perf-plugin:1.4.2”插件,则需要禁用它。“firebase:perf-plugin”操作并重写您的类文件。

在您的应用程序模块(应用程序级别)

buildTypes {
    debug {
       ...

        **FirebasePerformance {
            instrumentationEnabled false
        }**
    }

然后,清理 -> 重建

https://lightrun.com/answers/neotech-software-android-root-coverage-plugin-jacoco-class-mismatch-when-running-together-with-firebase-perf-plugin


-1
投票

对我有用的是进行干净的构建:

gradle clean build

这将重建所有代码并再次运行测试以生成所需的覆盖率报告

© www.soinside.com 2019 - 2024. All rights reserved.