次のように、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
テストソースがこのパッケージの唯一のソースであることを確認する必要があります。
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 プラグインはソースを正しくマークするようになりました。