在 gradle 中,一个测试配置如何声明对另一个项目的测试配置的依赖?

In gradle, how can a test configuration declare a dependency upon another project's test configuration?

在gradle 5.6.2 中,我有一个包含子项目的项目。子项目中的测试共享很多代码,所以我希望子项目测试依赖于父项目测试。但是测试中的引用不会解析,即使主项目中的引用可以解析。 Gradle 文档说要使用“地图符号”依赖声明,并且此依赖块不会产生错误:

dependencies {
    api project(":henchbot-api")
    testImplementation project(path: ':henchbot-api', configuration: 'testRuntime')
}

...但是测试不会编译。如果我将 testRunTime 更改为 testRuntimeClasspath,则 gradle 无法解决该项目依赖关系。

您还需要声明测试工件 - 请参阅 https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:project_jar_dependencies

在项目中henchbot-api

configurations {
    testLib
}

task testLibJar(type: Jar) {
    archiveBaseName = archivesBaseName + '-testLib'
    from sourceSets.test.output
}

artifacts {
    testLib testLibJar
}

在另一个中 - 依赖关系是

testImplementation project(path: ':henchbot-api', configuration: 'testLib')