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

标签 java gradle kotlin gradle-kotlin-dsl

我想向将包含集成测试的 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

相关:

谢谢

最佳答案

首先,创建源集和配置:

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")

关于java - 使用 Kotlin Gradle DSL 向 Kotlin 项目添加集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52074532/

相关文章:

intellij-idea - 使用 Gradle 从命令行构建 IntelliJ 模块

postgresql - 在 jOOQ 更新中使用 jsonb_set

java - 使用 Java 将文本动态添加到 JTextArea

java - 如何使用 Mockito 测试我的 DAO 方法?

java - JFX 将图像向上和向下缩放到父级

android-studio - 将 "-j"参数从 gradle 传递给 ninja

java - 使一个变量的实例类型与另一个变量的实例类型相同,针对接口(interface)进行编程

java - Gradle 构建失败并出现 Javadoc NullPointerException

android - 如何在协程之外获取 Flow 的值?

java - 如何使用 OpenTok 收听来 self 的应用程序的传入视频通话?