繁体   English   中英

使用 Kotlin DSL 进行集成测试的单独 Gradle 源集

[英]Separate Gradle source set for integration tests using Kotlin DSL

我正在开发在Kotlin 中实现的 Spring Boot 应用程序,并希望迁移 Gradle 构建以使用Gradle Kotlin DSL

我无法弄清楚的一件事是如何为我的集成测试设置单独的源集和任务。

我的源代码树如下所示:

src
├── integrationTest
│   ├── kotlin
│   └── resources
├── main
│   ├── kotlin
│   └── resources
└── test
    ├── kotlin
    └── resources

使用 Gradle 的 Groovy DSL 设置源集和任务如下:

// build.gradle
sourceSets {
    integrationTest {
        kotlin {
            compileClasspath += sourceSets.main.output + configurations.testRuntimeClasspath
            runtimeClasspath += output + compileClasspath
        }
    }
}

configurations {
    integrationTestCompile.extendsFrom testCompile
    integrationTestRuntime.extendsFrom testRuntime
}

task integrationTest(type: Test, dependsOn: []) {
    testClassesDirs = sourceSets.integrationTest.output.classesDirs
    classpath = sourceSets.integrationTest.runtimeClasspath
}

我找到了许多使用 Gradle Kotlin DSL 和其他源集的示例 - 但没有任何用于组合的示例。

任何人都可以帮忙吗?

以下是将 Groovy 脚本转换为 Kotlin DSL 的方法:

java {
    sourceSets {
        val integrationTest by creating {
            kotlin.apply {
                compileClasspath += sourceSets["main"].output + configurations.testRuntimeClasspath
                runtimeClasspath += output + compileClasspath
            }
        }
    }
}

configurations["integrationTestCompile"].extendsFrom(configurations["testCompile"])
configurations["integrationTestRuntime"].extendsFrom(configurations["testRuntime"])

val integrationTest by tasks.creating(Test::class) {
    val integrationTestSourceSet = java.sourceSets["integrationTest"]
    testClassesDirs = integrationTestSourceSet.output.classesDirs
    classpath = integrationTestSourceSet.runtimeClasspath
}

另请参阅:Gradle 的Migrating build logic from Groovy to Kotlin指南

暂无
暂无

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

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