IntelliJ で Gradle ソース フォルダーをテスト ソースとしてマークする 質問する

IntelliJ で Gradle ソース フォルダーをテスト ソースとしてマークする 質問する

次のように、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 ideaIntelliJ ファイルを再作成する必要があります。

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 プラグインはソースを正しくマークするようになりました。

おすすめ記事