使用 Kotlin Gradle DSL 向 Kotlin 项目添加集成测试

2023-11-26

我想向 Kotlin 项目添加一个额外的“源集”,其中将包含集成测试。我看过一些帖子,讨论如何为普通 Java 项目或 Kotlin 执行此操作,但使用 Groovy 而不是 Kotlin Gradle DSL。

总之,使用 Kotlin Gradle DSL:

  • 如何添加一个额外的“源集”,其中可以包含 Kotlin 代码、Java 代码和资源,以便将集成测试与常规单元测试分开?
  • 如何添加额外的任务和配置以与单元测试分开运行集成测试?

我希望目录结构看起来像:

src
   main
      java
      kotlin
      resources
   test
      java
      kotlin
      resources
   integration
      java
      kotlin
      resources

Related:

  • https://ryanharrison.co.uk/2018/07/25/kotlin-add-integration-test-module.html

  • https://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-integration-testing/

  • 如何向 Gradle 添加新的源集?

Thanks


首先,创建源集和配置:

sourceSets {
    create("intTest") {
        compileClasspath += sourceSets.main.get().output
        runtimeClasspath += sourceSets.main.get().output
    }
}

val intTestImplementation: Configuration by configurations.getting {
    extendsFrom(configurations.implementation.get())
}

val intTestRuntimeOnly: Configuration by configurations.getting {
    extendsFrom(configurations.runtimeOnly.get())
}

然后,创建任务来运行它们:

val integrationTest = task<Test>("integrationTest") {
    description = "Runs integration tests"
    group = "verification"

    testClassesDirs = sourceSets["intTest"].output.classesDirs
    classpath = sourceSets["intTest"].runtimeClasspath
    shouldRunAfter("test")
}

此外,您还可以添加新源集要使用的依赖项。例如:

intTestImplementation("org.junit.jupiter:junit-jupiter-api:$junitVersion")
intTestRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$junitVersion")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Kotlin Gradle DSL 向 Kotlin 项目添加集成测试 的相关文章

随机推荐