我的目标是为集成测试建立一个源集。我创建了一个名为“ intTest”的源集。我在里面做了一个简单的测试:
package com.github.frozensync;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
class Application {
@Test
@DisplayName("should work")
void foo() {
assertEquals(2, 2);
}
}
当我尝试运行它时,出现以下错误:
失败:构建失败,并出现异常。
*出了什么问题:
任务':integrationTest'的执行失败。
>未找到给定的测试,包括:[com.github.frozensync.Application](filter.includeTestsMatching)
*试试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。与--scan一起运行以获得完整的见解。
*在https://help.gradle.org上获得更多帮助
在0毫秒内建立失败
这是我的build.gradle
plugins {
id 'java'
}
group 'com.github.frozensync'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
sourceSets {
intTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}
idea {
module {
testSourceDirs += sourceSets.intTest.java.srcDirs
testResourceDirs += sourceSets.intTest.resources.srcDirs
}
}
configurations {
intTestImplementation.extendsFrom implementation
intTestRuntimeOnly.extendsFrom runtimeOnly
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
intTestImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}
test {
useJUnitPlatform()
}
task integrationTest(type: Test) {
description = 'Runs integration tests.'
group = 'verification'
testClassesDirs = sourceSets.intTest.output.classesDirs
classpath = sourceSets.intTest.runtimeClasspath
shouldRunAfter test
}
check.dependsOn integrationTest
我遵循了guide by Gradle。遇到此问题时,我尝试了以下操作:
-运行./gradlew cleanIntegrationTest integrationTest
绕过IntelliJ,但仍进行了0次测试
-添加the idea Gradle plugin。
-从this中添加dependsOn
。
-this的解决方案。
如何启用Gradle来发现源集“ intTest”中的测试?
答案 0 :(得分:3)
您的测试是JUnit 5测试,但是您没有告诉Gradle。就像测试任务一样,您需要致电
useJUnitPlatform()
在您的integrationTest
任务的配置中。