【问题标题】:How to exclude Fragment from Jacoco code coverage如何从 Jacoco 代码覆盖范围中排除 Fragment
【发布时间】:2016-03-29 21:09:39
【问题描述】:

我使用下面的代码来排除片段,但我无法从 jacoco 代码覆盖范围中排除片段,请帮助我。

task jacocoTestReport(type: JacocoReport) {

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

group = "Reporting"
description = "Generates Jacoco coverage reports"
reports {
    xml {
        enabled = true
        destination "${buildDir}/reports/jacoco/jacoco.xml"
    }
    csv.enabled false
    html {
        enabled true
        destination "${buildDir}/jacocoHtml"
    }
}

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

sourceDirectories = files(coverageSourceDirs)
additionalSourceDirs = files(coverageSourceDirs)
executionData = files('build/outputs/code - coverage/connected/flavors/smartcompanion/coverage.ec')
}

我们使用以下命令:-

gradlew connectedCheck
gradlew connectedAndroidTest
gradlew connectedDubugAndroidTest

每次在覆盖率报告中我们都能看到片段。

【问题讨论】:

  • 你解决过这个问题吗?我有同样的问题

标签: android code-coverage jacoco


【解决方案1】:

还有另一种排除文件的方法,你可以将它们过滤掉:

classDirectories = fileTree(
    dir: 'build/intermediates/classes/debug',
    excludes: ['**/R.class',
               '**/R$*.class',
               '**/BuildConfig.*',
               '**/Manifest*.*',
               '**/*Fragment*.*'
    ]
).filter ({file -> !file.name.contains('Fragment')})

由于某种原因,我也无法排除片段。我不知道出了什么问题。不过,按名称过滤它们是有效的。所以这有点像是一种解决方法,但至少我可以继续前进并完成我的工作。

我还注意到,在 Android 上,不同版本的 Gradle 和 jacoco 插件并不总是非常兼容。因此,尝试降级(或升级)也可能会有所帮助。

【讨论】:

    猜你喜欢
    • 2018-04-05
    • 2016-03-21
    • 1970-01-01
    • 2014-10-24
    • 2016-06-08
    • 2018-07-27
    • 2021-07-10
    • 1970-01-01
    • 2019-05-21
    相关资源
    最近更新 更多