【发布时间】:2017-06-23 04:38:51
【问题描述】:
我在 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 文件?这应该可以工作(我已经在本地测试过)-尝试运行
$ ./gradlew cleanIdea idea -
我宁愿有一个 Gradle 不生成我的 Idea 配置的解决方案,因为在同一个 repo 中也有非 Gradle 项目。
-
@tddmonkey 您的解决方案确实生成了正确的
.iml文件,但 IntelliJ 没有使用它们。你知道我是怎么做到的吗? Java 项目是另一个项目的子文件夹,而该项目是主项目,带有一个用于配置的.idea文件夹。 -
你是怎么打开的?我一般做
$ ./gradlew cleanIdea idea; open <name_of_project>.ipr
标签: java intellij-idea gradle integration-testing