gradle - 多模块项目中的 Gradle 测试库
问题描述
我想创建一个库,我的项目中的其他模块可以依赖它,但仅用于测试。我已经广泛阅读了 Gradle 文档,但找不到如何去做。这是我的项目结构:
gradle-example:
app:
src/main/kotlin ...
src/test/kotlin <- this is supposed to use 'com.example.SomeTestUtil'
testlib:
src/test/kotlin/com.example.SomeTestUtil
settings.gradle.kts:
rootProject.name = "gradle-example"
include("app")
include("testlib")
在我尝试添加的应用程序模块中
dependencies {
testImplementation(project(:testlib"))
}
SomeTestUtil
但是我在尝试导入app
模块测试类时遇到编译错误。
在允许在测试代码中使用测试源的同一项目中声明对模块的依赖关系的正确方法是什么?
澄清一下,我们想创建一个只能被其他模块使用的库,src/test
而不是src/main
.
解决方案
显然这可以通过使用https://docs.gradle.org/current/userguide/java_testing.html#sec:java_test_fixtures来完成
他们可以看到主要的源集类
测试源可以看到测试夹具类
因此,问题中示例的更改是:
- 更改
src/test
为src/testFixtures
- 将依赖声明为
testImplementation(testFixtures(project(":testlib")))
- 为模块添加
java-test-fixtures
插件build.gradle.kts
testlib
推荐阅读
- ruby-on-rails - 如何在 Active Storage 测试中存根文件大小?(测试::单元)
- google-apps-script - 将“行带”主题应用于范围
- mysql - MySql 查询在现场超时但不在本地
- apache-spark - 将数据框保存到本地文件系统会导致空结果
- c# - 在dll中动态调用方法时如何使用依赖注入(统一)?
- excel - Range.Insert 仅在数据已存在时有效
- powershell - 如何从 PowerShell 获取换行符中的字节数?
- regex - 正则表达式匹配过去的标签,包括空字符串
- python - 在 Django 查询集上执行操作
- python - 当我尝试从函数发送和接收列表时,PyQt5 接口崩溃