web-dev-qa-db-ger.com

IntelliJ kann keine Klassenpfad-Testressource finden

Ich habe ein Problem, bei dem IntelliJ 13.1.4 beim Durchführen eines Komponententests keine ServiceLoader-Datei im src/test/resources-Verzeichnis meines Moduls finden kann.

Bitte beachten Sie vor der Beantwortung, dass ich Folgendes getan habe:

  1. Das Modul ist ein Gradle-Projekt, und wenn ich gradle test starte, läuft der Komponententest einwandfrei.
  2. Ich habe diesen Unit-Test in der Vergangenheit erfolgreich in IntelliJ ausgeführt und das Modul gefunden. (Vielleicht eine frühere Version von IntelliJ?)
  3. Ich habe die IntelliJ-Moduleinstellungen noch einmal überprüft und das src/test/resources-Verzeichnis wird als Testressourcenverzeichnis markiert. (Siehe Abbildung unten.)
  4. Ich lade den Klassenpfad des Classloaders der Unit-Test-Klasse in die Klasse. Es hat die Verzeichnisse build/classes/test/ und build/classes/Java, aber weder build/resources/test/ noch build/resources/main/.
  5. Ich habe auf die Schaltfläche geklickt, um alle Gradle-Projekte zu aktualisieren.

Irgendwelche Ideen, woran IntelliJ sonst scheitern könnte?


Screenshot meiner Modulkonfiguration mit der Einstellung "Ressourcenordner testen".

My Test Resource Folders is correctly set.

46
Luis Casillas

Ich habe es geschafft, es besser zu machen, indem ich ein test-resources-Verzeichnis parallel zum test-Verzeichnis (!) Erstellt habe. 

Immer noch Probleme mit diesem Problem zu sehen. In diesen Fällen ist es möglich, die IntelliJ-Projekteinstellungen zu öffnen und die Testressourcen stattdessen als Quelle zu definieren (das Gradle-Projekt bleibt unverändert).

Muss ein IntelliJ-Fehler sein, da ich das gleiche in Android Studio erlebt habe.

EDIT:

Ich habe eine Problemumgehung gefunden zum Problem.

Fügen Sie Folgendes am Ende der Gradle-Konfiguration hinzu (und geben Sie den Pfad für die Testressourcen an):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
32

Mit IntelliJ 14 habe ich ein ähnliches Problem. Obwohl sich die erforderlichen Dateien in meinem Ressourcenordner befinden und sichergestellt ist, dass der Ordner in den Moduleinstellungen als Ressource angegeben ist, kann IntelliJ meine Dateien nicht in den Klassenpfad laden.

Eine Problemumgehung besteht darin, den erforderlichen Ordner als Abhängigkeit für das Modul in den Moduleinstellungen hinzuzufügen.

 enter image description here

Klicken Sie zuerst auf die Schaltfläche "+", um eine neue Abhängigkeit hinzuzufügen.

 enter image description here

Wählen Sie dann den Ordner aus, den Sie dem Klassenpfad hinzufügen möchten.

 enter image description here

Dann wählen Sie die Option "Klassen".

 enter image description here

Sobald dies erledigt ist, bauen Sie Ihr Modul einmal neu auf, und hoffentlich sollte dies der Trick sein. 

Im Idealfall sollte dies überhaupt kein Thema sein. Alle Dateien im Ressourcenordner sollten direkt im Klassenpfad abgelegt werden. Allerdings hat jeder IDE seine Macken.

20

Wenn ich auf dasselbe Problem stieß, funktionierte es für mich, das Ressourcenverzeichnis einmal unmarkieren als Ressourcenstammverzeichnis und dann erneut als Ressourcenstammverzeichnis zu markieren:

  1. Klicken Sie mit der rechten Maustaste auf den Ordner Ressourcen> Verzeichnis markieren als ...> Nicht als Ressourcenstamm markieren
  2. Klicken Sie mit der rechten Maustaste auf den Ordner Ressourcen> Verzeichnis markieren als ...> Ressourcenstamm testen
2

In meinem Fall habe ich die Tests einfach über die Maven-Befehlszeile ausgeführt, d. H. Einen grundlegenden mvn clean install. Danach hat es in IDEA funktioniert.

0
manyways

Ich stieß auf das gleiche Problem, bei dem Junit fehlgeschlagen war (FileNotFound), weil ich Platz in meinem Stammprojektordner hatte. zB: mein Projekt/Projekt1/.... 

  • Ich habe den Speicherplatz aus dem Stammordner entfernt, mein_Projekt/Projekt1/Alle Tests wurden erfolgreich bestanden. 
0
akshaymittal143