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

Héc*_*tor 10 testing junit intellij-idea kotlin

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

未收到测试事件

我正在使用此设置:

macOS Mojave

Intellij CE 2019.2

JDK 11.0.3

Kotlin 1.3.50

Gradle 5.2.1

JUnit 4.12
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗?

Jac*_*k J 34

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

尽管 Gradle 4.6(显然所有更新的版本)都有对 JUnit 5 的本机支持,但默认情况下并未启用此支持。如果我们想启用它,我们必须确保测试任务使用 JUnit 5 而不是 JUnit 4。

当我将以下代码添加到 Gradle 时,JUnit 5 工作正常。

test {
    useJUnitPlatform()
}
Run Code Online (Sandbox Code Playgroud)

  • 这是对我的案例唯一有效的答案;使用 IntelliJ IDEA 2020.2.3 (3认同)
  • 即使使用此设置,有时也不起作用,注释掉 `useJUnitPlatform()` 行,运行测试,然后取消注释似乎会有所帮助。 (3认同)

Cra*_*der 16

更新到2019.2.2或更高版本,其中包含相关问题的修复程序。

一种解决方法是通过更改委托选项使用IntelliJ IDEA而不是Gradle运行测试。

  • 2019.2.3同样 (4认同)

小智 16

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

要修复它,必须在 File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle -> Gradle JVM 上更改 Gradle JVM。

由于无效的 JDK 路径,它是红色的。

IntelliJ 版本:2019.2.3


Faz*_*zoM 11

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


小智 7

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

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

Run test using:下拉菜单中,此选项为:Gradle(default)将其更改为IntelliJ IDEA


azi*_*sal 6

清除gradle缓存对我有用;

./gradlew clean test --no-build-cache

如果它不起作用,你可以尝试这个

./gradlew clean test --no-build-cache --no-configuration-cache --rerun-tasks

JetBrains 问题跟踪器中提到了此解决方案。我只是想把它放在这里作为快捷方式。


Ged*_*bel 5

我经常不得不删除 build 和 out 文件夹来解决这个问题..


小智 5

对于那些使用 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")
    }
}
Run Code Online (Sandbox Code Playgroud)

PS:没有添加task.之前test {...}我收到以下错误!

the function invoke() is not found
Run Code Online (Sandbox Code Playgroud)