我有一个多模块应用程序,其中测试源文件在模块之间共享。对于访问共享文件的每个模块,我们将以下内容添加到 build.gradle
sourceSets {
String testDir = '../shared/src/test/java'
test {
java.srcDir testDir
}
}
并使用implementation project(path: ':shared')将共享模块添加为依赖项
使用 gradle 运行测试时,一切正常,但在查看源文件时,Android Studio 错误地显示 Unresolved 引用错误。
奇怪的是,我们名为“feature”的模块之一并没有表现出这种行为。所有其他模块都会这样做,尽管它们具有相同的 build.gradle 文件。
在调查该问题时,我注意到,在项目 View 中,共享模块中的测试目录被标记为 [feature]
,就好像它属于功能模块一样。
此外,我在事件日志中发现了以下内容:
检测到重复的内容根:模块的路径 [/project/shared/src/test/java] [project.feature 已从模块 [project.app、project.network project.wrapper] 中删除
这就好像 Android Studio 故意忽略源代码。
我尝试了重置缓存、删除 .idea 和 .gradle 目录、清理等所有组合。我尝试删除并重新创建模块,但找不到任何导致问题的原因。
所有团队成员都遇到同样的问题。
我还可以看到以下内容出现在 .idea/modules/feature/project.feature.iml
文件中,但没有出现在其他模块的任何 .iml 文件中。
<content url="file://$MODULE_DIR$/../../../shared/src/test/java">
<sourceFolder url="file://$MODULE_DIR$/../../../shared/src/test/java" isTestSource="true" />
</content>
最佳答案
这是 IDE 的限制:IDEA-214527 项目中的两个模块不能共享相同的内容根。
如果您有一个常见于多个模块的代码,最好将其提取到单独的 Gradle 模块中并将其用作依赖项。
关于Android Studio 在共享测试目录中显示未解析的引用,但执行任务按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68471719/