作者:爱lovely壮壮_366 | 来源:互联网 | 2023-02-12 19:10
我在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
1> LazerBanana..:
您需要确保测试源是此包的唯一来源
idea {
module {
sourceDirs -= file('src/integrationTest/java')
testSourceDirs += file('src/integrationTest/java')
}
}
然后你需要gradle cleanIdea idea
重新创建IntelliJ文件.
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插件正确标记源.
不,这不会改变任何东西。