gpt4 book ai didi

java - Gradle 和 JaCoCo : instrument classes from a separate subproject

转载 作者:行者123 更新时间:2023-12-03 05:53:20 25 4
gpt4 key购买 nike

我有一个遗留应用程序,它有一个与应用程序模块分开的单元测试模块。我正在将项目转换为使用 Gradle,结构如下所示:

/root
/module1
/module2
...
/moduleN
/test

测试模块通过 moduleN 执行对 module1 的测试(并依赖于它们)。我知道这不是一个很好的做法,因为它有点违背了单元测试的目的,但众所周知,遗留代码总是让人头疼。

因此,在我开始重构代码以便每个模块都有自己的单元测试之前(这意味着以合理的方式分解测试模块,即大量工作),我想找到一个临时解决方案来获得正确的代码覆盖率,即,让 JaCoCo 检测来自 module1、...、moduleN 的所有类,而不仅仅是模块测试。

有没有办法告诉 JaCoCo 从其他模块检测类?

最佳答案

要在“test”项目中包含来自子项目“module*”的覆盖结果,您可能想在测试项目的 build.gradle 中尝试这样的事情:

// [EDIT] - 'afterEvaluate' NOK, use 'gradle.projectsEvaluated' instead (see comments)
// afterEvaluate {
gradle.projectsEvaluated {
// include src from all dependent projects (compile dependency) in JaCoCo test report
jacocoTestReport {
// get all projects we have a (compile) dependency on
def projs = configurations.compile.getAllDependencies().withType(ProjectDependency).collect{it.getDependencyProject()}
projs.each {
additionalSourceDirs files(it.sourceSets.main.java.srcDirs)
additionalClassDirs files(it.sourceSets.main.output)
}
}
}

关于java - Gradle 和 JaCoCo : instrument classes from a separate subproject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46414355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com