spring——如何在gradle中进行资源和java文件夹测试

mzillmmw  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(314)

我在sourceset中创建了一个名为integration的自定义模块,用于保存所有集成测试用例。配置工作正常,但唯一的项目是集成文件夹,而资源文件夹不是 Test Resources Root 而java文件夹不是 Test Sources Root . 我希望集成文件夹java和resources看起来与测试模块完全一样,如下所示。

在上图中,如果您观察到java文件夹在test folder下看起来是绿色的,但是在integration folder下java文件夹看起来是蓝色的。
我除了:我希望java和resources文件夹在integration文件夹看起来完全像test文件夹。如果你在截图中看到我的主文件夹和集成文件夹看起来完全一样。但是我想让集成文件夹看起来和测试文件夹完全一样
我的grad尔 sourceSets 像这样吗

sourceSets {
    integration {
        compileClasspath += sourceSets.main.output
        runtimeClasspath += sourceSets.main.output
    }
}

在intellij中,我可以通过右键单击integration>java文件夹makedirectory as>testsources root来更改它

集成>资源文件夹使目录成为>测试资源根目录

但我想知道如何通过build.gradle实现这一点
有人能帮我吗

6pp0gazn

6pp0gazn1#

添加集成测试模块
→ 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插件并添加新源集的源目录:

idea {
    module {
        testSourceDirs += project.sourceSets.testIntegration.java.srcDirs
        testSourceDirs += project.sourceSets.testIntegration.kotlin.srcDirs
        testSourceDirs += project.sourceSets.testIntegration.resources.srcDirs
    }
}
ymzxtsji

ymzxtsji2#

是否要在资源文件夹图标上显示此红绿色箭头符号?在eclipse中,您可以简单地重命名 integration 源设置为 integrationTest ,eclipse gradle插件将相应地解释名称。
在intellij中,你必须应用gradle idea 插件并设置 testSrcDirs 这样地:

apply plugin: 'java'
sourceSets {
  integration
}
apply plugin: 'idea'
idea {
  module {
    testSourceDirs += project.sourceSets.integration.java.srcDirs
    testSourceDirs += project.sourceSets.integration.resources.srcDirs
  }
}

请看这里:intellij应该知道自定义sourceset包含测试源

相关问题