我正在尝试实现CodeCov/Jacoco,如下所述:
本指南适用于主应用程序模块,在应用程序级别的build.gradle中使用'com.android.application‘指定。
但是,我还有一个名为video_library的库模块,它被指定为一个在其build.gradle上带有'com.android.library‘的库。
每当我尝试运行video_library模块的Jacoco任务时,任务都会运行,但它无法运行我编写的任何单元测试,就好像它找不到任何测试一样(尽管此模块有50多个测试)。

项目结构如下:
├── app
│ ├── build
│ └── src
├── build
│ └── kotlin
├── gradle
│ └── wrapper
└── library_video
├── build
├── sampledata
└── src我以与app模块相同的方式实现了jacocoTestReport:
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模块实现进行哪些调整吗?
发布于 2021-09-23 10:12:24
您需要在:app模块中手动包含到classDirectories library_video类。这至少可以帮助我实现多模块代码覆盖率。
在:app模块中(我使用Gradle KTS,因此使用Kotlin):
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语言不同
https://stackoverflow.com/questions/68711069
复制相似问题