web-dev-qa-db-fra.com

IntelliJ ne trouve pas la ressource de test classpath

Je rencontre un problème qui empêche IntelliJ 13.1.4, lors de l'exécution d'un test unitaire, de trouver un fichier ServiceLoader dans le répertoire src/test/resources de mon module.

Veuillez noter avant de répondre que j'ai effectué toutes les tâches suivantes:

  1. Le module est un projet Gradle et si j’exécute gradle test, le test unitaire s’exécute correctement.
  2. J'ai exécuté ce test unitaire avec succès dans IntelliJ par le passé et le module a été trouvé. (Peut-être une version antérieure d'IntelliJ?)
  3. J'ai vérifié les paramètres du module IntelliJ et le répertoire src/test/resources est marqué comme étant un répertoire de ressources de test. (Voir capture d'écran ci-dessous.)
  4. Je suis en train de vider le classpath du chargeur de classe de la classe de tests unitaires dans la classe; il contient 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 ce qui pourrait faire qu'IntelliJ échoue ici?


Capture d'écran de la configuration de mon module, illustrant le paramètre Tester les dossiers de ressources.

My Test Resource Folders is correctly set.

46
Luis Casillas

J'ai réussi à l'améliorer en créant un répertoire test-resources parallèle au répertoire test (!). 

Encore voir des problèmes intermittents avec cela, cependant. Il est alors possible d'ouvrir les paramètres du projet IntelliJ et de définir les ressources de test sous la forme source (le projet Gradle restera inchangé).

Doit être un bogue IntelliJ, car j'ai connu la même chose dans Android Studio.

MODIFIER:

J'ai trouvé une solution de contournement au problème.

Ajoutez les éléments suivants à la fin de la configuration Gradle (et spécifiez le chemin de vos ressources de test):

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

Je rencontre un problème similaire avec IntelliJ 14. Malgré le fait que les fichiers nécessaires se trouvent dans mon dossier de ressources et que le dossier est spécifié comme ressource dans les paramètres du module, IntelliJ ne parvient pas à charger mes fichiers sur le chemin d'accès aux classes.

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

 enter image description here

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

 enter image description here

Ensuite, sélectionnez le dossier que vous souhaitez ajouter au chemin de classe.

 enter image description here

Ensuite, sélectionnez l'option "classes".

 enter image description here

Une fois que cela est 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 directement placés dans le chemin de classe. Cependant, chaque IDE a ses bizarreries.

20
Aditya Satyavada

Lorsque je rencontrais le même problème, cela fonctionnait pour moi une fois unmark le répertoire des ressources en tant que racine des ressources, puis le marquer à nouveau en tant que racine des ressources:

  1. Faites un clic droit sur le dossier des ressources> Marquer le répertoire comme ...> Désactiver en tant que racine des ressources.
  2. Faites un clic droit sur le dossier de ressources> Marquer le répertoire comme ...> Tester la racine des ressources
2

Dans mon cas, j’ai simplement exécuté les tests via la ligne de commande maven, c’est-à-dire un mvn clean install de base. Après cela, cela a fonctionné dans IDEA.

0
manyways

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

  • J'ai supprimé l'espace du dossier racine, my_project/project1/all test s'est correctement passé. 
0
akshaymittal143