当前位置: 首页 > 知识库问答 >
问题:

使用静态编程语言DSL进行集成测试的单独Gradle源代码集

越正阳
2023-03-14

我正在开发用静态编程语言实现的Spring Boot应用程序,并想迁移Gradle构建以使用Gradle静态编程语言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的例子,以及其他源集的例子——但是没有关于组合的例子。

有人能帮忙吗?

共有1个答案

包德业
2023-03-14

以下是如何将Groovy脚本转换为静态编程语言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的将构建逻辑从Groovy迁移到静态编程语言指南

 类似资料:
  • 为了描述Gradle构建脚本,我们可以通过< code>build.gradle.kts文件使用Kotlin。在< code>dependencies和build 部分全局定义要使用的Kotlin版本是一个常见的问题(在给定的情况下使用不同的版本是相当罕见的)。 请考虑以下代码 (Gradle 4.3.1): 如您所见,kotlin(在本例中为1.2.30)定义了两次:和,它们通常没有区别。由于D

  • 下列的https://docs.gradle.org/current/userguide/java_testing.html#sec:configuring_java_integration_tests和https://www.michael-bull.com/blog/2016/06/04/separating-integration-and-unit-tests-with-gradle我们正试

  • 我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?

  • 我有一个Spring Boot应用程序,以Kotlin为语言,Gradle为构建系统。所以基本上,我试图用应用程序源代码和依赖项构建一个胖jar,可以使用Java命令行工具运行。 Gradle构建脚本: 如果我使用gradle命令运行项目,那么它运行正常。但是当我构建jar并尝试ti运行时,它会抱怨以下错误:- 应用.kt:- 不知道我到底哪里做错了什么。

  • 我试图在基于静态编程语言的gradle文件中使用以下内容构建一个胖罐子。 但是,胖罐扩展了所有依赖项。我希望将jars按原样包含在/lib目录中,但我无法弄清楚如何实现这一点。 谁能给我一些建议,告诉我如何才能做到这一点? 谢啦

  • 我正在使用这篇博文为Spring Boot项目配置集成测试,但我仍然停留在声明源集上。我也在StackOverflow上找到了这篇文章,但我想我已经做得有点远了。 我的项目结构是 另外,IntelliJ不将testIntegration目录识别为Kotlin包。