【问题标题】:Why does android Instrumentation test report fail when coverage is enabled?为什么启用覆盖时android Instrumentation测试报告失败?
【发布时间】:2016-11-22 16:38:26
【问题描述】:

我正在尝试生成 jacoco 报告,但是当我将 testCoverageEnabled 属性设置为 true 时,我不断收到错误消息。

java.lang.NoSuchMethodError: No static method $jacocoInit()[Z in class L...

删除 testCoverageEnabled 属性我可以运行测试,但无法生成报告。

我使用的是标准 Jacoco 配置。单元测试和集成测试在独立运行时可以正常运行。

所有对此问题的在线参考似乎都是项目中的特定配置问题。任何帮助表示赞赏。

更新

apply plugin: 'jacoco'

task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest', 'createDebugCoverageReport']) {

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

    def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
    def mainSrc = "${project.projectDir}/src/main/java"

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: "$buildDir", includes: [
            "jacoco/testDebugUnitTest.exec",
            "outputs/code-coverage/connected/*coverage.ec"
    ])
}

【问题讨论】:

  • 您能展示一下您的 jacoco 配置吗?
  • @Artyom,更新在
  • 你使用什么工具版本?
  • 当前使用23.0.3
  • 我的意思是 jacoco toolVersion。

标签: android jacoco test-coverage


【解决方案1】:

我的工作配置。也许它可以帮助你。

  apply plugin: 'jacoco'

        def coverageSourceDirs = [
                '../app/src/main/java'
        ]

        jacoco {
            toolVersion = "0.7.6.+"
        }

        task jacocoTestReport(type: JacocoReport, dependsOn: "testDebugUnitTest") {
            group = "Reporting"
            description = "Generate Jacoco coverage reports"

            classDirectories = fileTree(
                    dir: '../app/build/intermediates/classes',
                    excludes: ['**/R.class',
                               '**/R$*.class',
                               '**/*$ViewInjector*.*',
                               '**/BuildConfig.*',
                               '**/Manifest*.*']
            )


            additionalSourceDirs = files(coverageSourceDirs)
            sourceDirectories = files(coverageSourceDirs)
            executionData = files('../app/build/jacoco/testDebugUnitTest.exec')

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

在 buildTypes 中添加这个

testCoverageEnabled = true

【讨论】:

  • 谢谢。不幸的是,此配置不会生成覆盖率报告,并且也无法运行集成测试。错误消息是No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations).。我假设这是一个单独的潜在问题,我无法弄清楚
猜你喜欢
  • 2021-01-06
  • 2022-11-14
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 2015-05-10
  • 1970-01-01
  • 1970-01-01
  • 2022-10-26
相关资源
最近更新 更多