【发布时间】:2020-04-20 11:33:12
【问题描述】:
上下文
我有一个具有以下特点的项目
- IntelliJ Ultimate 2020.1
- Java 13(带有 module-info.java)
- Kotlin 1.3.72
- JUnit(+ 真相)
- maven(我认为这并不重要)
代码库是混合的,有些类是使用纯 Java 编写的,有些是使用 Kotlin 编写的,测试也是如此。一切都按预期工作,即
- 所有代码均按正确顺序编译,并且可在 Kotlin 和 Java 之间完全互操作
- 所有测试都可以使用
mvn test或 IntelliJ “运行测试”来执行 - 可以运行生成的 jar(为了提供上下文)
但是……
除了一切正常之外,IntelliJ 警告我关于未声明的模块依赖仅当测试类是用 Kotlin 编写的.对于用纯 Java 编写的测试类,此警告不显示。
警告: 错误:(9, 6) 符号在模块 'org.junit.jupiter.api' 中声明,当前模块不依赖
该警告通常允许导入/需要相应的模块/依赖项,但[alt]+[enter] 对话框中没有提供解决方案。
到目前为止我尝试过的事情:
- 从 JUnit 4 升级到 5 并没有改变这种情况
- 谷歌搜索无济于事:(
- 通过使测试失败来确保在运行
mvn test时真正执行用 Kotlin 编写的测试 - 使用 IntelliJ 手动运行测试“运行测试”
- 在 Kotlin 之间来回转换测试
- 明确要求模块信息中的 JUnit API / 真实性
后者显然可以防止警告但不是解决方案,因为这实际上会产生硬依赖。根据我在谷歌搜索时发现的内容,maven-surefire-plugin 确保包含测试依赖项。另外:运行mvn test 就像上面所说的魅力一样,所以这似乎不是问题的一部分。
在写测试的时候看到所有的红线真的很讨厌......
问题:
如何解决 IntelliJ 中 Kotlin 测试类的警告?
注意
我开始相信这是 IntelliJ 中的一个错误,但我很乐意看到我忽略的内容。
由于从编译到使用 Maven 运行的一切工作都像一个魅力,我排除了有关项目结构等的细节。手头的问题是关于 IntelliJ 中的警告,而不是关于构建损坏或非功能性 jar 的问题。我很乐意添加这些以防万一它们变得有必要。
而且由于一切都有效(除了烦人的警告),我真的不知道在哪里继续研究,因此提出了一个问题。
【问题讨论】:
标签: unit-testing kotlin intellij-idea