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:
- le module est un projet Gradle, et si je lance
gradle test
le test unitaire fonctionne bien. - 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?)
- 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.) - je vide le classpath du classloader de la classe de test unitaire dans la classe; il a les répertoires
build/classes/test/
etbuild/classes/java
, mais nibuild/resources/test/
nibuild/resources/main/
. - 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.
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
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.
Tout d'Abord, cliquez sur le bouton "+" pour ajouter une nouvelle dépendance.
Ensuite, sélectionnez le dossier que vous souhaitez ajouter au classpath.
Sélectionnez ensuite l'option" classes".
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.
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.
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:
- Faites un clic droit sur dossier Ressources > marquer le répertoire comme ... > Décocher en tant que racine des ressources
- Faites un clic droit sur dossier Ressources > marquer le répertoire comme ... > Testez La Racine Des Ressources
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.