我在 IntelliJ 中有一个 Kotlin 项目,其结构如下:
在哪里
Bar
定义为:internal class Bar
和
BarTest
是这样的:class BarTest {
private lateinit var bar: Bar
}
我在 IntelliJ 中遇到了对
Bar
的引用的编译器错误留言:Cannot access 'Bar': it is internal in 'com.foo'
然而,测试是从命令行编译和运行的(通过 Gradle)。
使用 IntelliJ 时如何抑制/删除此错误?
我的设置是:
最佳答案
我使用相同的 IntelliJ 安装同时打开了两个项目:
internal
进行单元测试类位于 main
源代码树(都在同一个 IntelliJ 模块的边界内)IntelliJ 在以前的设置中仍然没有给出错误的事实让我得出结论,这个问题与我的 IntelliJ 设置无关。正如@JaysonMinard 建议的那样,我查看了 Gradle 配置的差异。
不同之处在于当前项目的顶级
settings.gradle
,我使用重命名模块的约定,a la:findProject(':module-blah')?.name = 'blah'
...以便通过较短的名称引用我的 Gradle 项目,同时在我的项目浏览器中连续列出它们(而不是按字母顺序与其他文件一起分散)。删除此快捷方式恢复了我在单元测试中寻找的行为。
关于intellij-idea - 为什么在我的单元测试中主源代码树中的 "internal"类型不可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53366990/