当前位置: 首页 > 知识库问答 >
问题:

通过Gradle命令运行具有代码覆盖率的Android测试

宗建章
2023-03-14

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

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

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

编辑:可能相关,但没有解决方案不适合我-测试调试不是我的任务。

编辑2:谷歌问题跟踪器,这似乎与我的问题有关。一年多前开业的。

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

共有1个答案

江向阳
2023-03-14

在对Gradle的工作原理进行了大量研究之后,我能够解决我的问题,这要归功于一些例子,比如这里的github项目。我需要做一些调整,使其与我的项目一起工作,但结果是,我可以从命令行仅在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文件中找到,该文件也需要定义。

说了这么多,做了这么多,我现在可以通过命令行分别从我的工具测试中获取我的单元测试的代码覆盖率了。

 类似资料:
  • 我正在使用Android Studio 1.2。2和Gradle插件1.2。3. 我正在尝试生成代码覆盖率报告,而不运行,只运行。我希望避免需要连接设备或模拟器,这样我就可以加快Jenkins服务器上的构建速度。 到目前为止,我所能做的最好的事情就是在报告中包含单元测试执行数据,如下所述:Android Studio中的Jacoco代码覆盖。这对于显示所有测试的结果很有用,但是目前我只想运行单元测

  • 免责声明初学者问题! 为了回答这个问题,我的项目结构高度简化,如下所示: 在阅读了Jeff Knupp关于单元测试的博客文章并写了一系列测试之后,我想看看我的代码现在被测试覆盖了多少。所以我安装了coverage.py,以下内容让我困惑: $coverage运行main。py(显示脚本中的打印/日志) $覆盖报告main.py 姓名、Stmts、小姐、封面 主要的py,114,28,75% 问题是

  • 到目前为止,我已经在IntelliJ中尝试了几个小时的代码覆盖率测试,但没有成功。 RuntimeException:存根! 现在,我已经读到在模块选项中更改依赖顺序可以修复这个问题。所以在改变顺序后,我得到了这个错误: 它指向下面的代码: 我谷歌了又谷歌,但唉,到目前为止我还没有找到解决方案。

  • 我有一个maven项目(link),我想在上面运行代码覆盖率。 我在主项目pom文件上运行了命令,但没有生成报告。相反,我得到的警告是 有人能建议我如何用这个pom文件生成代码覆盖率报告吗。我正在使用apache-maven-3.3。9和testNG。

  • 我有个身材。我的android应用程序中的gradle文件具有以下设置: My AndroidManifest.xml不包含版本代码,也不包含 versionName。 现在我想在Jenkins上构建这个应用程序,并将build_NUMBER作为应用程序的版本代码传递,以便每个构建都有更高的版本。 所以在工作中,我接到了一个电话: 当我使用“versionCode”重命名“app release.

  • 我很抱歉,因为我对软件测试非常陌生。但我有一个简单的代码,可以创建一个白盒测试用例,代码覆盖率为100%: 我需要关于我的输入数据在这段代码中应该是什么样子的帮助,以便用最少的测试用例实现100%的代码覆盖率。 我很感激能帮上忙,谢谢!