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

Ale*_*Man 6 java spring integration-testing gradle

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

在此输入图像描述

在上图中,如果您观察到测试文件夹下的java文件夹呈绿色,但集成文件夹下的java文件夹呈蓝色。

我例外的是:我希望集成文件夹中的javaresources文件夹看起来与测试文件夹中的完全相同。IE。如果您在屏幕截图中观察到,我的文件夹和集成文件夹看起来完全相同。但我希望集成文件夹使其看起来与测试文件夹完全相同

我的 gradlesourceSets看起来像这样

sourceSets {
    integration {
        compileClasspath += sourceSets.main.output
        runtimeClasspath += sourceSets.main.output
    }
}
Run Code Online (Sandbox Code Playgroud)

在 IntelliJ 中,我可以通过右键单击集成>java文件夹将目录设为>测试源根来更改它

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

在此输入图像描述

但我想知道如何通过 build.gradle 实现这一点

谁能帮我解决这个问题

小智 5

添加集成测试模块

\n

\xe2\x86\x92 https://ryanharrison.co.uk/2018/07/25/kotlin-add-integration-test-module.html

\n

要添加 testIntegration 模块,您可以对 build.gradle 文件进行一些编辑以定义新的源集(IntelliJ 模块):

\n
sourceSets {\n    testIntegration {\n        java.srcDir \'src/testIntegration/java\'\n        kotlin.srcDir \'src/testIntegration/kotlin\'\n        resources.srcDir \'src/testIntegration/resources\'\n        compileClasspath += main.output\n        runtimeClasspath += main.output\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

您还必须定义一个新任务来运行集成测试,将其指向 testIntegration 源集的类和类路径,而不是从 test 继承的默认值:

\n
configurations {\n    testIntegrationImplementation.extendsFrom testImplementation\n    testIntegrationRuntime.extendsFrom testRuntime\n}\n\ntask testIntegration(type: Test) {\n    testClassesDirs = sourceSets.testIntegration.output.classesDirs\n    classpath = sourceSets.testIntegration.runtimeClasspath\n}\n
Run Code Online (Sandbox Code Playgroud)\n

如果您使用 \xe2\x80\x98 自动创建空内容根目录的选项运行 Gradle\xe2\x80\x99,您应该会看到创建了一个新模块。不过,您可能会注意到一个问题,新模块未在 IntelliJ 中标记为测试模块。您可以手动执行此操作,但每次 Gradle 运行时都会重置。要覆盖此设置,您可以应用 idea 插件并添加新源集的源目录:

\n
idea {\n    module {\n        testSourceDirs += project.sourceSets.testIntegration.java.srcDirs\n        testSourceDirs += project.sourceSets.testIntegration.kotlin.srcDirs\n        testSourceDirs += project.sourceSets.testIntegration.resources.srcDirs\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n


Mar*_*min 4

您想在资源文件夹图标上显示这个红绿箭头符号吗?在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
  }
}
Run Code Online (Sandbox Code Playgroud)

看这里:IntelliJ 应该知道自定义源集包含测试源