IntelliJ 13.1.4で単体テストを実行しているときに、モジュールのsrc/test/resources
ディレクトリにServiceLoader
ファイルが見つからないという問題があります。
回答する前に、次のすべてを行ったことに注意してください。
gradle test
を実行すると、単体テストは問題なく実行されます。src/test/resources
ディレクトリはテストリソースディレクトリとしてマークされています。 (下のスクリーンショットを参照してください。)build/classes/test/
およびbuild/classes/Java
ディレクトリがありますが、build/resources/test/
もbuild/resources/main/
もありません。ここでIntelliJが失敗する原因は何ですか?
Test Resource Folders設定を示す、私のモジュール構成のスクリーンショット。
test-resources
ディレクトリは、test
ディレクトリ(!)と平行しています。
ただし、これで断続的に問題が発生します。そのような場合、IntelliJプロジェクト設定を開いて、代わりにsourceとしてテストリソースを定義することができます(Gradleプロジェクトは変更されません)。
Android Studio。で同じことを経験したので、IntelliJのバグでなければなりません。
編集:
I 回避策が見つかりました 問題に対して。
Gradle構成の最後に次を追加します(そしてテストリソースパスを指定します):
task copyTestResources(type: Copy) {
from "${projectDir}/src/test/resources"
into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
IntelliJ 14でも同様の問題に直面します。リソースフォルダーに必要なファイルがあり、フォルダーがモジュール設定でリソースとして指定されていることを確認しても、IntelliJは断続的にファイルをクラスパスにロードできません。
回避策の1つは、モジュール設定でモジュールの依存関係として必要なフォルダーを追加することです。
まず、「+」ボタンをクリックして、新しい依存関係を追加します。
次に、クラスパスに追加するフォルダーを選択します。
次に、「クラス」オプションを選択します。
それが完了したら、モジュールを一度再構築し、うまくいけばそれでうまくいくはずです。
理想的には、これはまったく問題になりません。リソースフォルダー内のすべてのファイルは、クラスパスに直接配置する必要があります。ただし、すべてのIDEには癖があります。
私が同じ問題に遭遇したとき、それは一度働いたnmarkリソースルートをリソースルートとして、それからリソースルートとして再びマークする:
私の場合、私は単純にmavenコマンドライン、つまり基本的なmvn clean install
。その後、IDEAで機能しました。
ルートプロジェクトフォルダーにスペースがあるため、Junitが失敗する(FileNotFound)という同じ問題に遭遇しました。例:my project/project1/....