web-dev-qa-db-ja.com

IntelliJはクラスパステストリソースを見つけることができません

IntelliJ 13.1.4で単体テストを実行しているときに、モジュールのsrc/test/resourcesディレクトリにServiceLoaderファイルが見つからないという問題があります。

回答する前に、次のすべてを行ったことに注意してください。

  1. モジュールはGradleプロジェクトであり、gradle testを実行すると、単体テストは問題なく実行されます。
  2. 過去にこのユニットテストをIntelliJで正常に実行しましたが、モジュールが見つかりました。 (IntelliJの以前のバージョンですか?)
  3. IntelliJモジュールの設定を再確認したところ、src/test/resourcesディレクトリはテストリソースディレクトリとしてマークされています。 (下のスクリーンショットを参照してください。)
  4. ユニットテストクラスのクラスローダーのクラスパスをクラスにダンプしています。 build/classes/test/およびbuild/classes/Javaディレクトリがありますが、build/resources/test/build/resources/main/もありません。
  5. ボタンをクリックして、すべてのGradleプロジェクトを更新しました。

ここでIntelliJが失敗する原因は何ですか?


Test Resource Folders設定を示す、私のモジュール構成のスクリーンショット。

My Test Resource Folders is correctly set.

50
Luis Casillas

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
34

IntelliJ 14でも同様の問題に直面します。リソースフォルダーに必要なファイルがあり、フォルダーがモジュール設定でリソースとして指定されていることを確認しても、IntelliJは断続的にファイルをクラスパスにロードできません。

回避策の1つは、モジュール設定でモジュールの依存関係として必要なフォルダーを追加することです。

enter image description here

まず、「+」ボタンをクリックして、新しい依存関係を追加します。

enter image description here

次に、クラスパスに追加するフォルダーを選択します。

enter image description here

次に、「クラス」オプションを選択します。

enter image description here

それが完了したら、モジュールを一度再構築し、うまくいけばそれでうまくいくはずです。

理想的には、これはまったく問題になりません。リソースフォルダー内のすべてのファイルは、クラスパスに直接配置する必要があります。ただし、すべてのIDEには癖があります。

24

私が同じ問題に遭遇したとき、それは一度働いたnmarkリソースルートをリソースルートとして、それからリソースルートとして再びマークする:

  1. リソースフォルダーを右クリック>ディレクトリを...としてマーク>リソースルートとしてマークを解除
  2. リソースフォルダーを右クリック>ディレクトリを次のようにマーク...>リソースルートをテスト
9

私の場合、私は単純にmavenコマンドライン、つまり基本的なmvn clean install。その後、IDEAで機能しました。

1
manyways

ルートプロジェクトフォルダーにスペースがあるため、Junitが失敗する(FileNotFound)という同じ問題に遭遇しました。例:my project/project1/....

  • ルートフォルダーからスペースを削除しました。my_project/ project1 /はすべてのテストに正しく合格しました。
0
akshaymittal143