繁体   English   中英

在 IntelliJ IDEA 中运行 Gradle 测试时出现“未找到给定包含的测试”

[英]"No tests found for given includes" when running Gradle tests in IntelliJ IDEA

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

我该如何解决?

Gradle 测试

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 更新中断 JUnit 测试没有帮助
  • 没有useJUnitPlatform()结果是一样的

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

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

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

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

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

使用 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中运行良好gradle :cleanTest :test和 java 测试必须在root/src/test/java/package 。否则compileTestKotlincompileTestJava都不会找到要编译的 java 测试。https://discuss.kotlinlang.org/t/not-able-to-run-unit-tests-on-kotlin-multiplatform-project/ 15779/7

Gradle 在选择其选择器时区分大小写。 请参阅此处您可能需要将“GradleTests”更改为“gradleTests”

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

tasks.withType(Test) {
    useJUnitPlatform()

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

/app/build.gradle

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

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

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

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

确保测试方法被授予公共访问权限。

就我而言,我有错误的 import

我需要import org.junit.jupiter.api.Test; 而不是import org.junit.Test;

在完成所有配置但一无所获后,一个简单的 gradle clean 为我解决了这个非常持久的问题,我可以继续使用“使用 gradle 运行测试”。

./gradlew :domain:test --tests "..."


> Task :domain:test FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':domain:test'.

> No tests found for given includes: ...

./gradlew clean
./gradlew :domain:test --tests "..."


BUILD SUCCESSFUL in 8s

我的问题是包含测试 class 的文件名与 class 名称不匹配。 所以我有AppRepositoryTest.kt里面有FetchDataUseCaseTest测试 class。 显然 Junit 4 不喜欢那样,所以一旦我将两个名字设为相同,它就开始工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM