首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android CodeCov/Jacoco for Library模块

Android CodeCov/Jacoco for Library模块
EN

Stack Overflow用户
提问于 2021-08-09 11:09:23
回答 1查看 197关注 0票数 0

我正在尝试实现CodeCov/Jacoco,如下所述:

https://about.codecov.io/blog/code-coverage-for-android-development-using-kotlin-jacoco-github-actions-and-codecov/

本指南适用于主应用程序模块,在应用程序级别的build.gradle中使用'com.android.application‘指定。

但是,我还有一个名为video_library的库模块,它被指定为一个在其build.gradle上带有'com.android.library‘的库。

每当我尝试运行video_library模块的Jacoco任务时,任务都会运行,但它无法运行我编写的任何单元测试,就好像它找不到任何测试一样(尽管此模块有50多个测试)。

项目结构如下:

代码语言:javascript
复制
├── app
│   ├── build
│   └── src
├── build
│   └── kotlin
├── gradle
│   └── wrapper
└── library_video
    ├── build
    ├── sampledata
    └── src

我以与app模块相同的方式实现了jacocoTestReport:

代码语言:javascript
复制
plugins {
        id 'com.android.library'
        id 'kotlin-android'
        id 'kotlin-kapt'
        id 'org.jetbrains.dokka'
        id 'maven-publish'
        id '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.setFrom(files([mainSrc]))
        classDirectories.setFrom(files([debugTree]))
        executionData.setFrom(fileTree(dir: "$buildDir", includes: [
                "jacoco/testDebugUnitTest.exec",
                "outputs/code-coverage/connected/*coverage.ec"
        ]))
    }

为了找到测试,我需要对library_video模块实现进行哪些调整吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-23 10:12:24

您需要在:app模块中手动包含到classDirectories library_video类。这至少可以帮助我实现多模块代码覆盖率。

:app模块中(我使用Gradle KTS,因此使用Kotlin):

代码语言:javascript
复制
val library_video_dir = fileTree(mapOf("dir" to "${buildDir}/../../library_video/build/classes/kotlin/main", "excludes" to fileFilter))

classDirectories.setFrom(files(listOf(debugTree, library_video_dir)))

尝试使用dir路径进行实验,因为它与Java语言不同

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68711069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档