java - 将 Gradle 源文件夹标记为 IntelliJ 中的测试源

标签 java intellij-idea gradle integration-testing

我在 gradle 中设置了一个集成测试源文件夹,如下所示:

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'

    sourceCompatibility = 1.8

    configurations {
        integrationTestCompile.extendsFrom testCompile
        integrationTestCompileOnly.extendsFrom integrationTestCompile
        integrationTestCompileOnly.extendsFrom testCompileOnly
        integrationTestRuntime.extendsFrom testRuntime
    }

    sourceSets {
        integrationTest {
            java {
                compileClasspath += main.output + test.output
                runtimeClasspath += main.output + test.output
                srcDir file('src/integrationTest/java')
            }
            resources.srcDir file('src/integrationTest/resources')
        }
    }

    task integrationTest(type:Test) {
        testClassesDir = sourceSets.integrationTest.output.classesDir
        classpath = sourceSets.integrationTest.runtimeClasspath
        outputs.upToDateWhen { false }
    }
}

对于执行测试,这非常有效,但它会导致 IntelliJ 的检查出现问题,这可能会改变测试代码的行为。 IntelliJ 无法将源文件夹识别为测试源。

我尝试这样添加它们(在 subprojects 中):

idea {
    module {
        testSourceDirs += file('src/integrationTest/java')
    }
}

但这根本没有帮助。我还尝试手动将它们标记为测试源(上下文菜单 -> 将目录标记为 -> 测试源根目录),但 IntelliJ 很快将其覆盖回正常源根目录。

如何在 Gradle 中正确配置它?

我在 Ubuntu 16.04 上使用 IntelliJ 2016.1.3 和 Gradle 2.14.1

最佳答案

然后您需要确保测试源是该包的唯一源

idea {
    module {
        sourceDirs -= file('src/integrationTest/java')
        testSourceDirs += file('src/integrationTest/java')
    }
}

然后您需要gradle cleanIdea idea 来重新创建 IntelliJ 文件。

确保在使用 gradle 的 idea 插件时没有使用 IDE gradle 集成,如果集成打开,对 iml 文件的自定义更改很可能会与 IDE 发生冲突

sourceSets {
    integrationTest {
        java {
            compileClasspath += main.output + test.output
            runtimeClasspath += main.output + test.output
            srcDir "$projectDir/src/integrationTest/java"
        }
        resources.srcDir "$projectDir/src/integrationTest/resources"
    }
}

编辑:Gradle 4.7 Idea 插件现在可以正确标记源。

关于java - 将 Gradle 源文件夹标记为 IntelliJ 中的测试源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42064377/

相关文章:

java - 为什么使用 Atlassian Crowd

java - 尝试视频通话时,Android WireApp记录UnsatisfiedLink错误:“wcall_set_video_send_state”

java - 扩展 xtext 新项目向导

git - IntelliJ IDEA/网络 Storm : how to make all files unselected by default in the commit dialog?

gradle - 读取文件的Gradle Multi项目构建

java - 如何在递归期间将值从所有先前帧(较高帧)传递到较低帧

performance - 使用 Maven 和 IntelliJ IDEA 处理大型项目的技巧

java - 如何在 Ubuntu 上安装 Intellij IDEA?

flutter - 如何在更大的项目中添加一个新的 flutter 项目作为 IntelliJ 模块

android - 从生成的 dex 文件中排除类