使用Intellij运行测试时,“未收到测试事件”

时间:2019-09-04 20:28:44

标签: testing intellij-idea kotlin junit

我有一个Kotlin项目,当我运行JUnit测试时,在IntelliJ中看不到测试执行结果,而是得到此消息:

  

未收到测试事件

我正在使用此设置:

macOS Mojave

Intellij CE 2019.2

JDK 11.0.3

Kotlin 1.3.50

Gradle 5.2.1

JUnit 4.12

你能帮我吗?

16 个答案:

答案 0 :(得分:18)

更新到2019.2.2或更高版本,其中包含related issue的修复程序。

一种解决方法是通过更改delegation option使用IntelliJ IDEA而不是Gradle运行测试。

答案 1 :(得分:12)

对我来说,发生同样的问题,下面的更改对我有用。 我正在使用的IntelliJ版本:2019.2.2
在IntelliJ IDE中,转到

文件->设置->构建,执行,部署->构建工具-> Gradle

Run test using:下拉选项中,这里是:Gradle(default)将其更改为IntelliJ IDEA

答案 2 :(得分:4)

就我而言,我的Gradle JVM配置无效(已从文件系统中删除了已配置的jdk)。

要修复此问题,必须在文件->设置->构建,执行,部署->构建工具-> Gradle-> Gradle JVM上更改Gradle JVM。

由于无效的jdk路径,它呈红色。

Intellij版本:2019.2.3

希望有帮助。

答案 3 :(得分:3)

对于仍面临此问题的任何人-
Build标签中检查是否有任何编译器错误。

答案 4 :(得分:1)

即使使用IntelliJ IDEA 2019.2.4,我也面临着同样的问题(最高答案说这已在2019.2.2修复)。事实证明,在尝试之前,我必须Invalidate Caches / Restart...

答案 5 :(得分:1)

在尝试自己解决此问题时,我发现JUnit 4可以工作,但是JUnit 5报告“未收到测试”。根据{{​​3}},我找到了解决方案。

  

即使Gradle 4.6(显然是所有较新的版本)都具有本机   对JUnit 5的支持,默认情况下未启用此支持。要是我们   要启用它,我们必须确保测试任务使用JUnit 5   而不是JUnit 4。

当我将以下代码添加到Gradle时,JUnit 5起作用了。

test {
    useJUnitPlatform()
}

答案 6 :(得分:1)

我经常必须删除build和out文件夹来解决此问题..

答案 7 :(得分:1)

对于使用IntelliJ的Spring boot gradle项目,我的问题是Spring Boot当前带来了JUnit 5。我还手动安装了JUnit 5。

compile 'org.junit.jupiter:junit-jupiter-api:5.6.3'中删除build.gradle后,我的测试再次开始工作。

答案 8 :(得分:0)

发生问题是因为我同时使用了以下两个插件

plugins
{
  id 'org.springframework.boot' version '2.2.6.RELEASE'
  id 'io.spring.dependency-management' version '1.0.7.RELEASE'
  ...
}

删除第二个测试后,找到并执行了测试。

答案 9 :(得分:0)

答案

我知道将Gradle与最新的JDK版本(13和14)一起运行时会发生一些问题。如果您选择JVM版本13或14作为Gradle JVM,请尝试使用8或11。

将Gradle JVM切换到版本11:

File -> Settings -> Build Execution, etc -> Built Tools -> Gradle -> Gradle JVM

说明

我相信默认情况下Intellij将使用项目SDK:

Project strcuture -> Project -> Project SDK

我已经有好几次了,并选择了JVM 11版为我修复了问题。

值得注意的是,在我的大多数项目中,我正在使用:

  • 龙目岛
  • 杰克逊
  • Lombok插件(需要启用注释处理)

我不记得我在哪里读它,但我相信lombok插件+ gradle + JVM版本存在一些问题。如果我记得在哪里找到有关该帖子的信息,我可能会重新考虑该答案。

答案 10 :(得分:0)

您最有可能不告诉系统如何运行测试。

在类标题上,例如定义一个测试运行器,例如:

@RunWith(MockitoJUnitRunner::class)
class MYTest {//...}

或可以定义junitXRunner等。

答案 11 :(得分:0)

对于那些使用IntelliJ和Kotlin仍然可能遇到此问题的人:

将以下行添加到build.grade.kts中。 希望对您有所帮助。

dependencies {
    testImplementation(kotlin("test-junit5"))
    testImplementation(platform("org.junit:junit-bom:5.7.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")}
tasks.test {
    useJUnitPlatform()
    testLogging {
        events("passed", "skipped", "failed")
    }
}

PS:不添加“任务”。测试前{...},我收到以下错误!

找不到函数invoke()

答案 12 :(得分:0)

确保您使用的是来自 org.junit.Test 的正确 @Test 注释; 有时在自动导入时,它可以从其他库中获取注释。对于前 - org.junit.jupiter.api.Test;

答案 13 :(得分:0)

尝试添加

testRuntimeOnly("org.junit.vintage:junit-vintage-engine:5.7.2")

如果您的测试使用旧的 org.junit.Test 而不是 org.junit.jupiter.api.Test

答案 14 :(得分:0)

这是对我有用的解决方案:

File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle

Switching Gradle JVM to: JAVA_HOME version 11.0.10 worked. 

在它是项目 SDK 之前。 enter image description here

答案 15 :(得分:-1)

对于我来说,单击“帮助->检查更新...”很有帮助

Help -> Check for Updates...