【问题标题】:How to make resources and java folder test based in gradle如何基于gradle进行资源和java文件夹测试
【发布时间】:2021-01-14 20:39:14
【问题描述】:

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

在上图中,如果您观察到 java 文件夹在 test 文件夹下呈绿色,但在 integration 文件夹下 java 文件夹呈蓝色。

我除了:我希望 integration 文件夹中的 javaresources 文件夹看起来与 test的文件夹完全相同> 文件夹。 IE。如果您在屏幕截图中观察到,我的 ma​​inintegration 文件夹看起来完全一样。但我希望 integration 文件夹使其看起来与 test 文件夹完全相同

我的 gradle sourceSets 看起来像这样

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

在 IntelliJ 中,我可以通过右键单击 integration>java 文件夹来更改它Make Directory as> Test Sources Root

integration>resources 文件夹 Make Directory as> Test Resources Root

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

谁能帮我解决这个问题

【问题讨论】:

  • 我很难理解你的问题,理解你想要什么,什么有效,什么无效。您能否尝试使您的问题更清楚?
  • 我错过了什么?在您的屏幕截图中,据我所知,您的集成中的 java 和资源文件夹看起来与测试文件夹完全相同。
  • @MarioVarchmin 如果您在屏幕截图中观察到,我的 mainintegration 文件夹看起来完全一样。但相反,我希望 integration 文件夹使其看起来与 test 文件夹 完全相同

标签: java spring gradle integration-testing


【解决方案1】:

添加集成测试模块

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
    }
}

【讨论】:

    【解决方案2】:

    你想在资源文件夹图标上有这个红绿箭头符号吗?在 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 should be aware that a custom sourceSet contains Test sources

    【讨论】:

    • 我应用了这个,但看起来还是一样
    • 为什么我们需要将文件夹从integration sourceset 重命名为integrationTest
    • 我现在明白您的问题与 IntelliJ 有关,并据此重写了我的答案。
    • 如果我们特别提到idea....在eclipse和其他IDE中的abt如何
    • 在 Eclipse 中,您只需将 sourceSet 从 integration 重命名为 integrationTest。我正在使用 Eclipse。我不知道其他 IDE 是如何处理这个的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2019-01-05
    相关资源
    最近更新 更多