【问题标题】:"Test events were not received" when run tests using Intellij使用 Intellij 运行测试时“未收到测试事件”
【发布时间】:2020-01-07 18:04:09
【问题描述】:

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

未收到测试事件

我正在使用这个设置:

macOS Mojave

Intellij CE 2019.2

JDK 11.0.3

Kotlin 1.3.50

Gradle 5.2.1

JUnit 4.12

你能帮帮我吗?

【问题讨论】:

标签: testing intellij-idea kotlin junit


【解决方案1】:

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

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

【讨论】:

  • 委派解决方法对我有用,但我仍然在 Windows 10 上运行的 Intellij v2019.2.3 CE 中遇到问题 - 对于运行 Junit 测试的 Java 项目。
  • 2019.2.3同理
  • 2019.2.4(终极版)相同
  • IntellijIDEA 告诉我一切都是最新的(2020 年 8 月 31 日(我收到了这条消息。通过 IntellijIDEA 而不是 Gradle 运行测试的链接似乎没有任何用处。我该如何解决这个问题?
【解决方案2】:

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

【讨论】:

  • 就我而言,由于缺少构造函数参数,我没有注意到编译错误(因为它与我尝试运行测试的文件位于不同的文件中)。我希望 IDE 只是向我显示该错误,而不是假装测试正在执行,但不幸的是它没有发生。
【解决方案3】:

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

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

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

IntelliJ 版本:2019.2.3

【讨论】:

    【解决方案4】:

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

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

    Run test using: 下拉列表中选择的选项是:Gradle(default) 将其更改为 IntelliJ IDEA

    【讨论】:

    • 谢谢 - 我在 Scalatest 测试中遇到了同样的问题(也使用 Gradle),这解决了它。
    • 完成此操作后,如何准确运行测试?
    • @birgersp 打开一个测试类,左键单击该类或其方法之一左侧的绿色箭头并选择运行测试...。默认快捷方式Ctrl+Shift+F10 将运行当前测试或类,具体取决于文本光标所在的位置。
    • 这并没有直接为我解决问题,但确实改善了诊断,提供了更好的信息(“未找到测试”),这使我能够解决问题。
    【解决方案5】:

    即使使用 IntelliJ IDEA 2019.2.4,我也面临同样的问题(最佳答案是在 2019.2.2 上修复)。原来我在尝试之前必须Invalidate Caches / Restart...

    【讨论】:

      【解决方案6】:

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

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

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

      test {
          useJUnitPlatform()
      }
      

      【讨论】:

      • 这是对我来说唯一有效的答案;使用 IntelliJ IDEA 2020.2.3
      • 即使使用此设置,它有时也不起作用,注释掉 useJUnitPlatform() 行,运行测试然后取消注释似乎有所帮助。
      • 我需要在迁移到 Spring Boot v2.x 时执行此操作,这也会将 JUnit 4 迁移到 JUnit 5
      【解决方案7】:

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

      Help -> Check for Updates...

      【讨论】:

        【解决方案8】:

        问题发生在我同时使用以下两个插件时

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

        删除第二个后,发现并执行了测试。

        【讨论】:

          【解决方案9】:

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

          【讨论】:

            【解决方案10】:

            回答

            我知道将 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 为我修复了问题。

            值得注意的是,对于我正在使用的大部分项目:

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

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

            【讨论】:

              【解决方案11】:

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

              在你的类头上定义一个像这样的测试运行器:

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

              或者可以定义junitX runner等

              【讨论】:

                【解决方案12】:

                对于那些在使用 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{...} 之前我收到以下错误!

                没有找到函数invoke()

                【讨论】:

                  【解决方案13】:

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

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

                  【讨论】:

                    【解决方案14】:

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

                    【讨论】:

                      【解决方案15】:

                      尝试添加

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

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

                      【讨论】:

                        【解决方案16】:

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

                        File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle
                        
                        Switching Gradle JVM to: JAVA_HOME version 11.0.10 worked. 
                        

                        之前是 Project SDK。

                        【讨论】:

                          【解决方案17】:

                          我遇到了这个问题,结果发现我在为 JUnit 5 配置的模块中编写了 JUnit 4 测试。解决方案是在我的测试类中使用 JUnit 5 导入:

                          import org.junit.jupiter.api.Assertions.*
                          import org.junit.jupiter.api.Test
                          

                          【讨论】:

                            【解决方案18】:

                            对我来说“重置”Gradle 设置有效。

                            【讨论】:

                              猜你喜欢
                              • 2021-09-24
                              • 2021-07-23
                              • 2019-06-18
                              • 1970-01-01
                              • 2015-06-01
                              • 2016-02-08
                              • 2020-05-30
                              • 1970-01-01
                              • 1970-01-01
                              相关资源
                              最近更新 更多