如何强制Gradle在“main”中选择测试?

如何强制Gradle在“main”中选择测试?,gradle,Gradle,我们在main中有一些测试(因此它们可以内置到服务中并从服务中运行)。最新的渐变默认为不将main中的源识别为测试代码 我想我可以使用Nebula Facets插件,但以下内容也不能解决这个问题: facets { functionalTest { parentSourceSet = 'main' includeInCheckLifecycle = false } } 以下是如何覆盖srcDirs: facets { functionalTest { inc

我们在
main
中有一些测试(因此它们可以内置到服务中并从服务中运行)。最新的渐变默认为不将
main
中的源识别为测试代码

我想我可以使用Nebula Facets插件,但以下内容也不能解决这个问题:

facets {
  functionalTest {
    parentSourceSet = 'main'
    includeInCheckLifecycle = false
  }
}

以下是如何覆盖
srcDirs

facets {
  functionalTest {
    includeInCheckLifecycle = false
  }
}

sourceSets {
  functionalTest {
    java {
      srcDirs = ["${projectDir}/src/main/java"]
    }
    resources {
      srcDirs = ["${projectDir}/src/main/resources"]
    }
  }
}

如果您确实需要使用
src/main/java
中的测试,那么您不需要额外的源代码集

相反,您需要配置测试任务,以便它使用
main
源集类路径

以下是使用Kotlin DSL和任务配置避免配置此类测试任务的示例:

val mainTest = tasks.register<Test>("mainTest") {
    useJUnitPlatform()
    description = "Run tests from main"
    group = "verification"

    testClassesDirs = sourceSets["main"].output.classesDirs
    classpath = sourceSets["main"].runtimeClasspath
}

tasks.named("check").configure {
    dependsOn(mainTest)
}
val mainTest=tasks.register(“mainTest”){
useJUnitPlatform()
description=“从主服务器运行测试”
group=“验证”
testClassesDirs=sourceset[“main”].output.classesDirs
classpath=sourceset[“main”]。运行时类路径
}
任务。命名为(“检查”)。配置{
dependsOn(主测试)
}

code会很有帮助。