等价于gradle中的测试依赖关系的api?

时间:2018-09-21 09:46:30

标签: gradle dependency-management

我正在执行多模块gradle项目。在我的一个模块中,我具有api依赖项:

api('de.flapdoodle.embed:de.flapdoodle.embed.mongo')

我想将其更改为在所有模块的测试中可见的依赖关系。有testImplementation依赖性,但没有testApi

因为我想使用真实的mongo实例而不是嵌入式实例,所以我不再对生产类路径具有这种依赖性。另一方面,我在依赖于数据访问的不同模块中进行测试-在这种情况下,我想在测试类路径上使用嵌入式mongo运行那些测试。

如何使此依赖性在所有模块测试中可见?

2 个答案:

答案 0 :(得分:1)

(在我看来)问题是在多模块项目中的各个模块之间共享测试代码

简短的回答-否-模块之间存在直接的测试依赖关系共享。

要通过内部设置在内部模块之间共享测试代码

官方gradle路线 https://docs.gradle.org/current/userguide/java_testing.html#sec:java_test_fixtures

简单的黑客攻击

testImplementation files(project(':core-module').sourceSets.test.output.classesDirs)

在需要的地方单独添加上述行,或在适当的情况下以subprojects()根添加

*还有其他可能的路线*
例如:通过配置 child.testImplementation extends parent.testImplementation (or runtime)

答案 1 :(得分:-1)

gradle tasks

testCompileClassPath包括api个依赖项,因此在这里一切都很好,de.flapdoodle.embed.mongo在测试中将可见。