在使用Intellij运行测试时,出现“未接收到测试事件”的错误。

113

我有一个Kotlin项目,当我运行Junit测试时,在IntelliJ中无法看到测试执行结果,而是收到以下消息:

未接收到测试事件

我正在使用这个设置:

macOS Mojave

Intellij CE 2019.2

JDK 11.0.3

Kotlin 1.3.50

Gradle 5.2.1

JUnit 4.12

你能帮我吗?


请发布您用于设置测试的代码。 - Rafa
1
https://youtrack.jetbrains.com/issue/IDEA-221159 - Slaw
谢谢 @Slaw,我在该问题的评论中找到了一个解决方法,现在它已经工作了。 - Héctor
26个回答

129

对我来说,出现了同样的问题,以下更改对我有用。我使用的IntelliJ版本是:2019.2.2
在IntelliJ IDE中,前往

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

在这里,在"使用以下选项运行测试:"下拉菜单中,所选的选项是:Gradle(默认)将其更改为IntelliJ IDEA


1
谢谢 - 我在使用 Scalatest 测试(也是使用 Gradle)时遇到了同样的问题,这个解决方法很有效。 - Ryan
完成这个之后,我应该如何准确地运行测试? - birgersp
这并没有直接解决我的问题,但它确实改善了诊断,提供了更好的信息(“未找到测试”),使我能够解决问题。 - Michael Kay
1
在 IntelliJ 更新后遇到了这个错误 - 这个答案解决了我的问题。IntelliJ IDEA 2022.1.2。 - Frank
无法与IntelliJ IDE 2020.3.1版本一起使用,这些选项在gradle设置中不可用。必须手动编辑app:build.gradle文件。 - vishnu satheesh
显示剩余2条评论

64

委托解决方法对我有用,但我在运行Windows 10上的Intellij v2019.2.3 CE时仍然遇到了问题 - 这是一个运行Junit测试的Java项目。 - robbie70
4
2019年2月3日的情况与现在相同。 - Zon
1
同样适用于2019.2.4(旗舰版)。 - Frank
1
IntellijIDEA 告诉我一切都是最新的(2020年8月31日),但我收到了这条消息。通过 IntellijIDEA 运行测试的链接似乎没有任何有用的内容。我该如何解决这个问题? - digitig
我曾经在Kotest测试中遇到过这个问题,但是在纯JUnit 5测试中没有。在将Kotest升级到4.3.2版本后,这个问题就不再存在了。 - Viktor Sirotin
显示剩余2条评论

59

在我自己尝试解决这个问题时,我发现JUnit 4可以工作,但是JUnit 5报告“未接收到测试”。 根据petrikainulainen.net ,我找到了解决办法。

即使Gradle 4.6(以及所有更新版本)原生支持JUnit 5,但默认情况下不启用此支持。 如果我们要启用它,我们必须确保测试任务使用JUnit 5而不是JUnit 4。

当我将以下代码添加到Gradle中时,JUnit 5就可以正常工作:

test {
    useJUnitPlatform()
}

4
这是唯一在我的情况下有效的答案;使用 IntelliJ IDEA 2020.2.3。 - Jonathan E. Landrum
3
即使有了这个设置,有时候也会出现问题。不过注释掉 useJUnitPlatform() 这一行,运行测试,然后再取消注释似乎会有帮助。 - tsobe
1
当迁移到Spring Boot v2.x时,我需要执行此操作,这也将JUnit 4迁移到JUnit 5。 - sebasira

38

对于仍然遇到问题的人 -
请检查您在 Build 选项卡中是否有任何编译器错误。


1
在我的情况下,由于我没有注意到一个构造函数参数缺失(因为它在与我尝试运行测试的文件不同的文件中),导致了编译错误。我希望IDE能够简单地向我显示该错误,而不是假装测试正在执行,但不幸的是这并没有发生。 - Andrzej Zabost
我也遇到了编译错误。 - Vishnu Singhal

16

我的情况是 Gradle JVM 配置无效(配置的jdk已从文件系统中删除)。

要解决这个问题,我需要在文件 -> 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle -> Gradle JVM 中更改Gradle的JVM配置。

由于JDK路径无效,它会显示为红色。

IntelliJ版本:2019.2.3


4
我经常需要删除build和out文件夹来解决这个问题..

在Android Studio下结束OpenJDK进程可以解决我的问题。 - Qamar

4
对于那些在使用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:在test {...}之前不加task.,我会得到以下错误!
the function invoke() is not found

3

为了在 Junit 5 中进行测试,请在应用级别的build.gradle文件中,在android{}块下添加以下内容。

testOptions {
    unitTests {
        all {
            useJUnitPlatform()
        }
    }
}

更改需要在 android 块中进行,除此之外,这确实为我解决了问题! - Patrick Aleman
不错,对我有用! - diskostu

3
对我来说,“重置”Gradle设置起了作用。

enter image description here


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接