如何解决类型不匹配的问题:@ExtendWith(SpringExtension :: class)KClass-> intelij中的类?

时间:2018-08-05 18:44:12

标签: spring-boot intellij-idea kotlin junit5

我正在使用intellij社区2018.2和gradle 4.9与kotlin 1.2.60

我刚刚从start.spring.io下载了一个带有kotlin / gradle支持+ web + h2 + jpa的springboot2软件包。我正在从春季开始关注this官方教程。

gradle buildgradle test在命令行中都可以正常工作。

在intellij中,我从IDE中收到以下错误:

Error:(9, 13) Kotlin: Type mismatch: inferred type is    KClass<SpringExtension> but Class was expected

package org.ninrod.blog.blog

import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.test.context.junit.jupiter.SpringExtension

@ExtendWith(SpringExtension::class) <-- RIGHT HERE
@SpringBootTest
class BlogApplicationTests {
    @Test
    fun contextLoads() {
    } 
}

这是示例的完整源代码:link

如何在intellij中修复此问题,以使项目像在命令行中一样干净地编译?

ps:这是intellij中问题的屏幕截图:

screenshot: build error -> type mismatch kclass -> class

2 个答案:

答案 0 :(得分:1)

好吧,我绝对卸载了所有与Java有关的内容,然后我从零开始安装了所有内容,删除了所有配置以及所有内容。然后它起作用了。

答案 1 :(得分:0)

您所拥有的是正确的。如下面的屏幕截图所示,我无法重现该错误。而且我能够毫无问题地运行您的测试。因此,这是一个错误的错误。您可以通过在命令提示符下的IDEA中通过Gradle确认项目构建来验证这一点。

尝试以下操作:

  1. 从Gradle工具窗口中,单击“刷新所有Gradle项目”按钮
    • 从我所看到的以及我的经验来看,我认为这不会解决问题。但这是一个快速的打击,值得一试。
  2. IntelliJ IDEA高速缓存可能已损坏。转到*文件>使缓存无效/重新启动*。在对话框窗口中,单击“无效并重新启动”。 IDEA重新启动并打开项目后,请等待它完成对项目的重新索引编制(在底部观察进度)。重新索引完成后,请查看问题是否已解决。
    • 我怀疑这可以解决问题。
  3. 如果上述方法不起作用,则可能是某些配置不正确。尝试重新创建IDEA项目。关闭项目,删除(或存档).idea目录和任何*.iml文件。然后通过选择build.gradle文件导入项目。如果您对此不熟悉,请在IntelliJ Working with Gradle in IntelliJ IDEA
  4. 上观看“ IDEA documentation page”视频
  5. 最后,请确保您运行的是两周前发布的最新版本的IntelliJ IDEA(v2018.2)。这就是我正在运行的。您使用了许多最新最伟大的技术(JUnit 5,Kotlin,带有Spring 5.x的Spring boot 2.x),因此旧版本的IDEA 可能会出现问题。最后,即使您为我工作了,我还是建议您在gradle.properties中升级到最新版本的Kotlin(v1.2.60)

我没有收到错误,可以运行测试: enter image description here