【问题标题】:Running Android Tests with code coverage through Gradle command通过 Gradle 命令运行具有代码覆盖率的 Android 测试
【发布时间】:2016-04-11 16:05:58
【问题描述】:

不使用 JaCoCo,有没有办法通过 Gradle 命令在我的测试中运行代码覆盖?似乎没有一个 Gradle 任务可以运行覆盖率的测试。我看到的唯一选项是 Android Studio UI 上的一个按钮,它将运行我的代码覆盖率测试。

理想情况下,我想通过命令行的代码覆盖率来自动化我的测试并访问它生成的报告。

顺便说一句,我对 JaCoCo 没有任何意见。我只是想知道是否有办法在不使用库的情况下做到这一点。

编辑:Possibly related but didn't the solution did not work for me - testDebug 对我来说不是任务。

编辑 2:Google Issue Tracker 这似乎与我的问题有关。一年多前开业。

edit 3:在尝试使用 Jacoco 时,这似乎也是一个问题......根据我的研究,jacoco 似乎没有提供 gradle 任务来在 src/test 目录中进行单元测试。希望被证明是错误的!

【问题讨论】:

    标签: android testing gradle build-automation


    【解决方案1】:

    在对 Gradle 的工作原理进行了大量研究之后,我能够解决我的问题,这要归功于一些示例,例如 here 和来自这个 github 项目 here。我需要做一些调整才能让它与我的项目一起工作,但结果是我可以在命令行的 src/test/ 目录中找到的单元测试上运行代码覆盖,并访问那些生成的报告。

    这是任务在我的 build.gradle 中的样子:

    task jacocoReport(type: JacocoReport, dependsOn: 'testMockDebugUnitTest') {
        group = 'Reporting'
        description = 'Generate Jacoco coverage reports after running tests.'
    
        reports {
            xml.enabled = true
            html.enabled = true
        }
    
        classDirectories = fileTree(
                dir: 'build/intermediates/classes/test/mock/debug',
                excludes: [
                        '**/R*.class',
                        '**/BuildConfig*'
                ]
        )
    
        sourceDirectories = files('src/main/java')
        executionData = files('build/jacoco/testMockDebugUnitTest.exec')
    
        doFirst {
            files('build/intermediates/classes/test/mock/debug').getFiles().each { file ->
                if (file.name.contains('$$')) {
                    file.renameTo(file.path.replace('$$', '$'))
                }
            }
        }
    }
    

    我需要做出的改变:单独运行我的单元测试由 gradle 任务 testMockDebugUnitTest 完成,jacocoReport 任务需要依赖于我的单元测试首先完成。生成的构建树对我来说有点不同,所以我硬编码了它。Jacoco 依赖的执行数据在testMockDebugUnitTest 任务生成的.exec 文件中找到,也需要定义。

    说到底,我现在可以通过命令行将单元测试的代码覆盖率与我的仪器测试分开。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-14
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多