intellij-idea - 为什么在我的单元测试中主源代码树中的 "internal"类型不可见?

标签 intellij-idea kotlin

我在 IntelliJ 中有一个 Kotlin 项目,其结构如下:

  • 主/com/foo/Bar.kt
  • test/com/foo/BarTest.kt

  • 在哪里 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 时如何抑制/删除此错误?

    我的设置是:
  • macOS 10.14.1
  • IntelliJ 2018.2.6
  • Kotlin 1.3.10
  • 最佳答案

    我使用相同的 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/

    相关文章:

    java - 是否可以在 IntelliJ IDEA 中编写 lambda 字母 (λ)?

    java - 应用程序的 IntelliJ IDEA 13.0 恒定 Debug模式?

    java - IntelliJ IDEA 中 Java 项目的相对资源路径

    android-studio - 查找 Kotlin 类的主构造函数的用法

    android - 如何找出前一个 fragment 正在使用导航组件

    java - Android 中 java.util.Calendar 的不同行为

    java - 如何修复PreparedStatement.setString中的 "Declaration, final or effectively final variable expected"

    java - Android Studio 中针对 Dependent Spinner 的 Gradle 构建错误

    generics - 除了上限之外,Kotlin 是否还有任何通用约束?

    java - 在 Kotlin 中仅使用 getter 覆盖 Java 接口(interface)