0

gradle idea プラグインを使用してマルチプロジェクト ビルドを構成した後、アイデア 12 でテスト ケースを実行しようとしています。私のプロジェクトは、テスト リソース (src/test/resources) に gradle のデフォルトを使用するように構成されています。これらのリソースにいくつかのフィルタリングを適用します。

// filter test resources
processTestResources {
    doLast {
        ant.replace(dir: sourceSets.test.output.resourcesDir, replacefilterfile: testProps, includes: "**/*.xml,**/*.properties")
    }
}

さらに、processTestResources は、「生成された」ファイルを sourceSets.test.output.resourcesDir にコピーするカスタム タスクに依存します。

フィルタリングされたテスト リソースに依存しているため、多くのテストが失敗しています。テスト ケースに使用されているクラスパスを見ると、rootProject/out/test/targetProject を指しています。そこを見ると、テスト クラスと事前にフィルター処理されたリソース (および、テスト リソースを処理する前に明示的にコピーしたリソース以外) が表示されます。それらは単に src/test/resources からコピーされたようです。これは予想される動作ですか?また、テスト クラスとリソースが、デフォルト gradle デフォルト rootProject/targetProject/build/... ではなく、rootProject/out/rootProject に配置されるのはなぜですか?

4

1 に答える 1

1

IDEA でビルドする場合、Gradle は関与しません。リソースをコピーしてコードをコンパイルしているのは IDEA です。Gradle で生成されたリソースを IDEA ビルドに追加できますが、対応する Gradle タスクを自分で実行するか、IDEA 実行構成を構成してタスクを呼び出す必要があります。(IDEA でコンパイル後のフックが見つからないようです。)

于 2013-10-24T19:10:44.633 に答える