【问题标题】:"No tests found for given includes" when running Gradle tests in IntelliJ IDEA在 IntelliJ IDEA 中运行 Gradle 测试时“未找到给定包含的测试”
【发布时间】:2020-05-30 09:01:08
【问题描述】:

由于“未找到给定包含的测试”错误,我无法在 IntelliJ IDEA 中通过 Gradle 运行测试。

我该如何解决?

GradleTests

import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertTrue;

public class GradleTests {
    @Test
    public void initTest() {
        assertTrue(true);
    }
}

build.gradle

plugins {
    id 'java'
}

group 'org.example'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    //testCompile group: 'junit', name: 'junit', version: '4.12'

    // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.6.0'
}

test {
    useJUnitPlatform()
}

错误:

> Task :test FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> No tests found for given includes: [GradleTests.initTest](filter.includeTestsMatching)

一些注意事项:

  • JUnit 4 和 5 都重现了问题
  • IntelliJ IDEA 2019.3.3(社区版),Build #IC-193.6494.35,于 2020 年 2 月 11 日构建
  • 测试在src/test/java
  • Intelij 2019.1 update breaks JUnit tests 这样更换跑步者并没有帮助
  • 没有useJUnitPlatform()结果是一样的

【问题讨论】:

  • 你的 Gradle 版本是什么,可以从命令行运行测试吗?
  • 你试过添加testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.0")
  • @BenWatson 感谢您的帮助!我阅读了有关 JUnit5 最新版本的更多信息,并发现从 5.4.0 开始,它已经聚合了包含 api 和引擎的工件“junit-jupiter”(它更适合我)。似乎“引擎”已从我的主项目中的其他依赖项加载。
  • 那么它是否适用于聚合人工制品?
  • @johanneslink 是的,我可以使用聚合工件运行我的测试。我已经添加并接受了这个问题的答案。

标签: java gradle intellij-idea junit5


【解决方案1】:

我有一个错误:没有找到给定包括的测试:...(filter.includeTestsMatching)。

检查 JUnit 依赖后,我发现了 junit-4.13.1 版本。

修复了将此依赖项替换为 org.junit.jupiter.api-5.7.0。

【讨论】:

    【解决方案2】:

    /app/build.gradle

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

    【讨论】:

      【解决方案3】:

      Gradle 不知道去哪里寻找测试。将此添加到您的应用程序 build.gradle 文件根目录(不在 android 或依赖项闭包内):

      tasks.withType(Test) {
          useJUnitPlatform()
      
          testLogging {     // This is for logging and can be removed.
              events("passed", "skipped", "failed")
          }
      }
      

      【讨论】:

      • 谢谢伙计 - 我不得不改用 useTestNG in build.gradle
      【解决方案4】:

      使用 IntelliJ 编辑 Kotlin 项目时出现此行为的另一个原因是用于测试的文件夹,Java 类需要位于 java 的子文件夹中,而 Kotlin 类需要位于 kotlin 的子文件夹中。

      这是我创建的一个小项目示例,它演示了文件夹结构 https://github.com/znsio/AutomatedTestingWithKotlin/tree/main/src/test

      我找到了下面引用的解释以及源链接:

      "我的问题在于 kotlin 和 java 测试的单一路径。所以 kotlin 测试在 root/src/test/kotlin/package 中,并且它们在 gradle :cleanTest :test 中运行良好,而 java 测试必须在 root/src/test/java/package 中。否则 @987654326 @ 和 compileTestJava 都找不到要编译的 java 测试。" https://discuss.kotlinlang.org/t/not-able-to-run-unit-tests-on-kotlin-multiplatform-project/15779/7

      【讨论】:

        【解决方案5】:

        我在类似的设置中遇到了这个错误,但无法用以前的答案解决它。通过这样做解决了它。

        1. 文件 > 设置 (Ctrl+Alt+S)
        2. 构建、执行、部署 > 构建工具 > gradle
        3. 使用 Intellij IDEA 运行测试

        全部归功于:https://linked2ev.github.io/devsub/2019/09/30/Intellij-junit4-gradle-issue/

        【讨论】:

        • 唯一对我有用的解决方案。我猜 gradle 插件坏了
        • 3.使用 Intellij IDEA 运行测试——并运行测试——你的“问题”仍然存在并且测试将失败。但是 Intellij 会给你更多的“输出”。就我而言,愚蠢的测试作者(我)忘记给测试一个 void 返回类型。
        • @geneSummons 感谢您对这个小小的灵魂保护者的评论
        • 似乎新版本的 Android Studio 不再有这个参数了。有什么想法吗?
        • 非常感谢,你拯救了我的一天~
        【解决方案6】:

        Gradle 在选择其选择器时区分大小写。 See here您可能需要将“GradleTests”更改为“gradleTests”

        【讨论】:

          【解决方案7】:

          感谢Ben Watson 我找到了解决方案。自 JUnit 5.4.0 以来,存在具有 api 和引擎依赖项的聚合工件。因此,只需向 build.gradle 添加一个依赖项即可解决此问题。

          testCompile ('org.junit.jupiter:junit-jupiter:5.6.0')
          

          【讨论】:

          • 奇怪的是,您的解决方案对我不起作用,我的设置与您的非常相似。作为一种解决方法,我手动创建了一个 JUnit IntelliJ 配置......但并不酷:/
          • 我不得不重新打开项目。 Intellij 有大量需要这样的东西的缓存错误。基本上,在重新打开项目之前,gradle sync 并没有修复项目设置。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-17
          • 1970-01-01
          • 1970-01-01
          • 2011-04-03
          • 2016-03-23
          • 2014-08-04
          相关资源
          最近更新 更多