在带有 Gradle 的 Android 项目中使用 JaCoCo
Posted
技术标签:
【中文标题】在带有 Gradle 的 Android 项目中使用 JaCoCo【英文标题】:Use JaCoCo in Android Project with Gradle 【发布时间】:2019-11-24 08:46:17 【问题描述】:我有一个带有 Gradle 5.1.1 的 android 项目 我想使用 JaCoCo 生成有关测试代码覆盖率的 html 报告。我尝试按照一些文章中的说明进行操作,但我的所有尝试都导致了错误。
对我有用的只是应用插件“jacoco”(之后项目成功构建)。
apply plugin: 'jacoco'
但是,一旦我添加任务“jacocoTestReport”,Gradle 就无法与文件同步,并且出现此错误。
这是我的任务:
jacocoTestReport
reports
html.enabled true
xml.enabled false
csv.enabled false
html.destination file("$buildDir/jacocoHtml")
这是我的错误:
ERROR: Could not find method jacocoTestReport() for arguments [build_8kqk7qvpoocfxfydulk1p4m35$_run_closure3@1aba12a5] on project ':app' of type org.gradle.api.Project.
在“build.gradle”中添加“应用插件”后,我尝试使用“gradlew clean build”。教程作者成功添加任务并在终端使用此行获取 jacoco 报告:
gradlew build jacocoTestReport
这里是我用来了解如何将 jacoco 添加到项目中的文章的链接:
https://reflectoring.io/jacoco/
https://android.jlelse.eu/get-beautiful-coverage-reports-in-your-android-projects-ce9ba281507f
所以我的问题是:有没有办法使用 Gradle 将 Jacoco 添加到 Android 项目中?我做错了什么?
【问题讨论】:
我不太确定这是否是您的问题,但请尝试从 buildDir 中删除花括号 ->html.destination file("$buildDir/jacocoHtml")
【参考方案1】:
可能只是缺少复制粘贴,但请确保将函数定义为 gradle 中的任务,即:task jacocoTestReport(type: JacocoReport, dependsOn: ['testDebugUnitTest'])
我关注这个博客,在我最初的项目中设置我的 Jacoco 实例,发现它很有帮助。 https://engineering.rallyhealth.com/android/code-coverage/testing/2018/06/04/android-code-coverage.html
【讨论】:
很高兴它对你有用。 Jacoco 很棒,我强烈建议您考虑将 Danger 与它一起用于您的管道。我在上面发布的博客非常适合详细介绍如何支持多模块项目。以上是关于在带有 Gradle 的 Android 项目中使用 JaCoCo的主要内容,如果未能解决你的问题,请参考以下文章
如何使旧的 Eclipse 项目在带有 Gradle 的 Android Studio 上运行? [关闭]
使用sonarqube gradle插件配置带有子模块的Android项目的正确方法是啥?
Gradle Build Error找不到supportlibrary
带有 Gradle 的 POM 中缺少 Android 库依赖项