gradle - 如何强制Gradle在 `main`中进行测试?

标签 gradle

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

我以为可以使用Nebula Facets插件,但是以下方法也无法解决该问题:

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

最佳答案

如果您确实需要使用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)
}

关于gradle - 如何强制Gradle在 `main`中进行测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61879650/

相关文章:

gradle - 为什么Gradle NUnit插件无法执行单元测试?

android - 将Android Studio项目导出到GIT

android - 找不到 "libconscrypt_jni.so"

build - 如何获得对Gradle build生成的jar文件的引用?

找不到 Android Gradle build-info.xml

unit-testing - Gradle:如何定义在我的Test类型任务之前执行的任务

java - 使用 apache CXF 使用 equals/hashCode 方法从 WSDL 生成 POJO

java - IntelliJ spring boot 项目中有很多损坏的源代码和类路径错误?

gradle - IntelliJ IDEA bu​​ild.gradle.kts 自动完成功能不起作用

eclipse - Gradle boot创建的可执行jar重新打包缺少的jar