当用kotlin编写单元测试时,intellij显示错误消息

lymgl2op  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(298)

上下文

我有一个具有以下特点的项目
intellij ultimate 2020.1版
Java13(带有module info.java)
Kotlin1.3.72
朱尼特(+真相)
Maven(我认为这并不重要)
代码库是混合的,有些类是用纯java编写的,有些是用kotlin编写的,测试也是如此。一切正常,就是这样
所有代码都按正确的顺序编译,并且在kotlin和java之间完全可以互操作
所有测试都可以使用 mvn test 或intellij“运行测试”
结果jar可以运行(为了提供上下文)
但是。。。
除了一切正常之外,intellij还警告我只有在测试类是用kotlin编写的情况下才存在未声明的模块依赖关系。对于纯java编写的测试类,不会显示此警告。
警告:错误:(9,6)符号在当前模块不依赖的模块“org.junit.jupiter.api”中声明
该警告通常允许导入/要求相应的模块/依赖项,但中没有提供解决方案 [alt]+[enter] 对话框。
到目前为止我尝试过的事情:
从junit4升级到5并没有改变这种情况
谷歌搜索无效:(
确保用kotlin编写的测试在 mvn test 通过使测试失败来运行
使用intellij“运行测试”手动运行测试
在kotlin之间来回转换测试
在模块信息中显式要求junitapi/truth
后者显然阻止了警告,但不是解决方案,因为这实际上产生了一个硬依赖。从我在google中发现的情况来看,maven surefire插件确保包含测试依赖项。另外:跑步 mvn test 就像上面提到的魅力,所以这似乎不是问题的一部分。
写测试时看到所有的红线真是注解。。。

可疑行为

同样的测试,但在java中-一切正常

问题:

如何修复intellij中kotlin测试类的警告?

注意

我开始相信这是intellij中的一个bug,但我很高兴看到我忽略了什么。
由于从编译到使用maven运行的所有工作都非常出色,因此我排除了有关项目结构等的细节。目前的问题是关于intellij中的警告,而不是关于损坏的构建或不起作用的jar。如果有必要的话,我很乐意加上这些。
另外,由于每件事实际上是工作(除了恼人的警告),我真的不知道在哪里继续研究,因此产生了一个问题。

s3fp2yjn

s3fp2yjn1#

这是idea kotlin插件错误突出显示中的错误:https://youtrack.jetbrains.com/issue/kt-26037
解决方法:添加 @file:Suppress("JAVA_MODULE_DOES_NOT_DEPEND_ON_MODULE") 到包声明之前的测试文件。

相关问题