Gradle - 如何从不同的 gradle 项目运行测试并仍然获取覆盖率数据

2023-12-29

有谁知道如何从不同的 gradle 项目运行测试并仍然获得 emma 覆盖率报告数据?

这是我当前的布局:

Root/
  settings.gradle (no explicit build.gradle - just defines all subprojects)
  SubProjectA/
    build.gradle
    src/ (all real source is here)
  SubProjectATest/
    build.gradle
    src/ (all testing code is here)
  SubProjectB/ (similar structure as A)
  SubProjectBTest/ (similar structure as ATest)

我目前正在使用 emma 插件,我想构建子项目A并运行所有测试子项目ATest从 build.gradle 中子项目A.

以下是我在 SubProjectA 的 build.gradle 中尝试过的一些内容

  1. testCompile project(':SubProjectATest').sourceSets.test.classes (正如本文所建议的 https://stackoverflow.com/questions/5144325/gradle-test-dependency),但我得到了一个错误“Could not find property 'sourceSets' on project"
  2. 就是直接的testCompile project(':SubProjectATest'),但后来我得到“..SubProjectA/build/classes/test', not found”以及“跳过任务”:SubProjectA:compileTestJava' as it has no source files."
  3. 只需添加一个源集,如下所示:

    测试 { 爪哇{ srcDir '../SubProjectATest/src' } }

添加源集(选项 3)是唯一有效的选择,但这样做似乎很草率。有谁知道如何使用项目依赖项来做到这一点?

更新#1我还尝试了下面的答案之一来使用 test.dependsOn 并且测试确实运行,但是emma插件报告了以下内容:build/classes/test', not found


1.和2.只需将类添加到测试编译类路径即可。这对于要执行的测试没有任何影响。

3. 是错误的方法,因为您不应该将项目 X 的​​源添加到项目 Y。

如果你想要的是gradle :SubProjectA:test还执行:SubProjectATest:test,您需要做的就是添加一个任务依赖性:

子项目A/build.gradle:

test.dependsOn(":subProjectATest:test")

顺便问一下,您将测试放在单独的项目中的动机是什么?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gradle - 如何从不同的 gradle 项目运行测试并仍然获取覆盖率数据 的相关文章

随机推荐