IntelliJ ne peut pas trouver la ressource de test classpath

J'ai un problème où IntelliJ 13.1.4, lors de l'exécution d'un test unitaire, ne peut pas trouver un fichier ServiceLoader dans le répertoire src/test/resources de mon module.

Veuillez noter avant de répondre que j'ai fait tout ce qui suit:

  1. le module est un projet Gradle, et si je lance gradle test le test unitaire fonctionne bien.
  2. j'ai exécuté ce test unitaire avec succès dans IntelliJ dans le passé, et il a trouvé le module. (Peut-être une version antérieure D'IntelliJ?)
  3. j'ai vérifié L'IntelliJ paramètres du module et le répertoire src/test/resources est marqué comme étant un répertoire de ressources de test. (Voir la capture d'écran ci-dessous.)
  4. je vide le classpath du classloader de la classe de test unitaire dans la classe; il a les répertoires build/classes/test/ et build/classes/java, mais ni build/resources/test/ ni build/resources/main/.
  5. j'ai cliqué sur le bouton pour actualiser tous les projets Gradle.

Des idées sur quoi D'autre pourrait causer L'échec D'IntelliJ ici?


Capture D'écran de ma configuration de module, montrant la ressource de Test Réglage des dossiers.

Mes dossiers de ressources de Test sont correctement définis.

44
demandé sur Luis Casillas 2014-08-26 23:30:56

5 réponses

J'ai réussi à le faire fonctionner mieux en créant un répertoire test-resources parallèle au répertoire test (!).

Toujours voir des problèmes intermittents avec cela, cependant. Dans ces cas, il est possible d'ouvrir les paramètres du projet IntelliJ et de définir les ressources de test comme source à la place (le projet Gradle restera inchangé).

Doit être un bug IntelliJ, car j'ai vécu la même chose dans Android Studio.

Modifier:

, je trouvé un solution de contournement au problème.

Ajoutez ce qui suit à la fin de la configuration Gradle (et spécifiez votre chemin d'accès aux ressources de test):

task copyTestResources(type: Copy) {
    from "${projectDir}/src/test/resources"
    into "${buildDir}/classes/test"
}
processTestResources.dependsOn copyTestResources
30
répondu Kristofer Sommestad 2014-09-25 08:34:01

Je fais face à un problème similaire avec IntelliJ 14. En dépit d'avoir les fichiers nécessaires dans mon dossier de ressources et de s'assurer que le dossier est spécifié en tant que ressource dans les paramètres du module, IntelliJ ne parvient pas par intermittence à charger mes fichiers sur le classpath.

Une solution consiste à ajouter le dossier requis en tant que dépendance pour le module dans les paramètres du module.

entrez la description de l'image ici

Tout d'Abord, cliquez sur le bouton "+" pour ajouter une nouvelle dépendance.

entrez la description de l'image ici

Ensuite, sélectionnez le dossier que vous souhaitez ajouter au classpath.

entrez la description de l'image ici

Sélectionnez ensuite l'option" classes".

entrez la description de l'image ici

Une fois cela fait, reconstruisez votre module une fois et espérons que cela devrait faire l'affaire.

Idéalement, cela ne devrait pas du tout être un problème. Tous les fichiers du dossier de ressources doivent être placés directement dans le classpath. Cependant, chaque IDE a ses bizarreries.

18
répondu Aditya Satyavada 2016-09-02 10:13:12

J'ai rencontré le même problème, où Junit échouait (FileNotFound) parce que j'avais de l'espace dans mon dossier de projet racine. par exemple: mon projet/projet1/....

  • j'ai supprimé l'espace du dossier racine, my_project / project1 / tout test passé correctement.
0
répondu akshaymittal143 2018-04-02 21:17:52

Quand je rencontrais le même problème, il a fonctionné pour moi une fois unmark le répertoire resources comme racine de ressources, puis le marquer à nouveau comme racine de ressources:

  1. Faites un clic droit sur dossier Ressources > marquer le répertoire comme ... > Décocher en tant que racine des ressources
  2. Faites un clic droit sur dossier Ressources > marquer le répertoire comme ... > Testez La Racine Des Ressources
0
répondu Henning Heitkötter 2018-04-18 07:39:18

Dans mon cas, j'ai simplement exécuté les tests via la ligne de commande maven, c'est-à-dire un mvn clean install basique. Après cela, il a travaillé dans L'idée.

0
répondu manyways 2018-09-24 15:06:52