[英]"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)
一些注意事项:
src/test/java
useJUnitPlatform()
结果是一样的我在类似的设置中遇到了这个错误,但无法用以前的答案解决它。 通过这样做解决了它。
全部归功于: 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
。否则compileTestKotlin
和compileTestJava
都不会找到要编译的 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.