java - 如何基于gradle进行资源和java文件夹测试

标签 java spring gradle integration-testing

我在 sourceSets 中创建了一个自定义模块,称为 集成 用于保留我所有的集成测试用例。配置工作正常,但唯一的项目是 集成 文件夹 资源 文件夹不是 Test Resources Root java 文件夹不是 Test Sources Root .我想要 集成 文件夹 java 和资源看起来与 完全一样测试如下图所示的模块。
enter image description here
在上图中,如果您观察到 java 文件夹在测试文件夹下看起来绿色,但在集成文件夹下 java 文件夹看起来是蓝色的。
我除了:我想要 java 资源 中的文件夹集成 文件夹看起来与 的文件夹完全相同测试文件夹。 IE。如果您在屏幕截图中观察到我的 主要 集成 文件夹看起来完全一样。但是我想要 集成 文件夹使其看起来与 完全相同测试文件夹
我的毕业生sourceSets看起来像这样

sourceSets {
    integration {
        compileClasspath += sourceSets.main.output
        runtimeClasspath += sourceSets.main.output
    }
}
在 IntelliJ 中,我可以通过右键单击 来更改它。集成>java 文件夹 将目录设为> 测试源根目录

整合>资源文件夹 将目录设为> 测试资源根目录
enter image description here
但我想知道如何通过 build.gradle 实现这一点
谁能帮我解决这个问题

最佳答案

添加集成测试模块
https://ryanharrison.co.uk/2018/07/25/kotlin-add-integration-test-module.html
要添加 testIntegration 模块,您可以对 build.gradle 文件进行一些编辑以定义新的源集(IntelliJ 模块):

sourceSets {
    testIntegration {
        java.srcDir 'src/testIntegration/java'
        kotlin.srcDir 'src/testIntegration/kotlin'
        resources.srcDir 'src/testIntegration/resources'
        compileClasspath += main.output
        runtimeClasspath += main.output
    }
}
您还必须定义一个新任务来运行集成测试,将其指向 testIntegration 源集的类和类路径,而不是从 test 继承的默认值:
configurations {
    testIntegrationImplementation.extendsFrom testImplementation
    testIntegrationRuntime.extendsFrom testRuntime
}

task testIntegration(type: Test) {
    testClassesDirs = sourceSets.testIntegration.output.classesDirs
    classpath = sourceSets.testIntegration.runtimeClasspath
}
如果您使用“自动为空内容根目录创建目录”选项运行 Gradle,您应该会看到创建了一个新模块。不过,您可能会注意到一个问题,新模块未在 IntelliJ 中标记为测试模块。您可以手动执行此操作,但每次运行 Gradle 时都会重置。要覆盖这一点,您可以应用想法插件并添加新源集的源目录:
idea {
    module {
        testSourceDirs += project.sourceSets.testIntegration.java.srcDirs
        testSourceDirs += project.sourceSets.testIntegration.kotlin.srcDirs
        testSourceDirs += project.sourceSets.testIntegration.resources.srcDirs
    }
}

关于java - 如何基于gradle进行资源和java文件夹测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65726566/

相关文章:

java - 如何使用 JSch 执行交互式命令并从 Java 读取其稀疏输出

java - 安卓 NDK 计时器

java - 使用带有 Groovy 2.6+ 的 Spock 框架来支持 Java 8+ 语法

mysql - 如何根据 JSON 中的名称将 ID 号从 Angular 传递到 Spring

gradle - JHipster-无法在gradle构建中使用liquibase连接到dev postgres DB

Android 资源链接失败 - Daemon : AAPT2 aapt2-3. 2.0-4818971-windows Daemon #0

java - 为什么将 "L"添加到我的 Java 路径中?

java - JSDAI错误: Dictionary data file is missing for schema

java - @Service 注解的 bean 未被 SpringBootApplication 拾取

更新 Gradle 和构建工具后缺少 Android JAVA 字节码