Eclipse/Maven: JUnit tests sont pas compilées lors de l'exécution de leur
Je suis en train de travailler sur un projet à l'aide de Maven et Eclipse (plugin m2eclipse). J'ai des problèmes avec JUnit tests:
Parfois, lors de l'exécution d'entre eux au sein d'Eclipse, elles ne seront pas compilés, mais les vieux fichiers de classe sont utilisés à la place. Quand je supprime les fichiers de classe, je reçois ClassNotFoundExceptions
dans Eclipse. J'ai ensuite recompiler manuellement à l'aide de mvn test-compile
ou d'autres objectifs.
J'ai aussi remarqué que la catégorie fichiers de tests sont parfois mis dans le classes
sous-répertoire au lieu de test-classes
.
Je ne peux vraiment pas comprendre ce qui est faux.
JUnit fichiers java sont dans src/main/java
et sont correctement nommés (*Test.java
).
Dois-je compiler et exécuter toujours via Maven? Pourquoi ne pas Eclipse compiler les fichiers quand je veux l'exécuter? (Fait intéressant, parfois il n'. Parfois, tout fonctionne parfaitement.)
- J'ai exactement le même problème après j'ai mis à jour mon Eclipse STS et AspectJ plugins pour le latests.
- Même problème ici. Également mis à jour et ça marchait très bien avant.
- Par convention classes de test aller à
/src/test/java
, pas/src/main/java
...
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème avec Eclipse STS (Printemps de développement de la variante), m2e et JUnit. La solution a été de définir le dossier de sortie pour
src/test/java
àtarget/test-classes
:src/test/java
dossier dans l'Explorateur de packagestarget/test-classes
, cliquez sur OKMaintenant les changements dans les classes de test sont compilés correctement et vous devriez être en mesure d'exécuter des tests JUnit dans Eclipse.
Le problème est que Eclipse compile les tests unitaires pour le dossier de sortie par défaut
target/classes
alors que JUnit plugin correctement tente de les exécuter à partir detest-classes
.Il y a quelques doublons à cette question:
En plus de la réponse ci-dessous
vous devriez vérifier pour s'assurer que votre constructeur est correctement paramétré par un clic droit sur votre projet et va Propriétés -> Constructeur. Si vous voyez que votre constructeur est manquant, vous devez en installer une. Dans mon cas, le projet maven avait un AspectJ dépendance et quand j'ai utilisé le Maven plugin Eclipse pour construire mon projet Eclipse, il était à la recherche d'un AspectJ constructeur par défaut. J'ai installé le AspectJ des outils de développement et il a résolu le problème.
Espérons que cette aide!
Et un autre point: JUnit test les classes doivent être dans src/test/java, pas de src/main/java, sinon ils ne sont pas correctement détecté par Maven que les classes de test et ils seraient inclus dans le pack pot et pas dans le test jar.
Les explications les plus probables pour le problème auquel vous êtes confronté, c'est que le dossier de sortie de
src/test/java
n'est pas correctement configuré.Au lieu de la fixation de cette configuration manuellement, vous pouvez avoir m2eclipse résoudre ce problème pour vous: il suffit de cliquer droit sur le projet et choisissez Maven > mise à Jour du Projet.
J'ai fait face à un même problème. Essayé les suggestions ci-dessus de la configuration du dossier de sortie & Maven>Projet de mise à Jour, mais ni travaillé. Enfin changé ma testOutputDirectory de "build/classes" aussi bien, et maintenant les Tests Unitaires sont arriver repris et exécuté.
Enfin trouvé la raison du problème. Dans mon pompon nous avons eu également configuré maven compilateur plugin comme ci-dessous
outputDirectory de configuration n'est pas nécessaire et a été la cause du problème ci-dessus. Après la suppression de cette balise, junits se sont compilés à construire>testclasses dossier et sont en cours d'exécution au cours de maven build ainsi. Youpi 🙂
Vous trouverez l'exemple de "testSourceDirectory" dans pom.xml ci-dessous:
Assurez-vous que est-il un point d'exclamation sur votre icône de projet! Dans mon cas, j'ai ignoré qu'il y a un point d'exclamation comme:
point d'exclamation sur l'icône du projet
Ouvrir les "Marqueurs" de la perspective, puis résoudre les problèmes selon les conseils de.
ce que les "Marqueurs" de la perspective de montrer
Le test junit classes peuvent être exécuter avec succès après que j'ai appelé "mvn clean test" parce qu'ils ne sont pas consulter l'illisible pot être averti dans les "Marqueurs" de la perspective.À cet effet, il est facile de l'ignorer..
Pour quelqu'un qui travaille sur java scala mélange projet, c'est quelque chose à noter.
Même après avoir fait de la configuration de la manière illustrée ci-dessous,
et de faire un Maven > mise à Jour du Projet, eclipse honneurs le répertoire de sortie de la src/test/java dans le dossier de projet, cependant, pas pour la src/test/scala dossier. (Vous pouvez le comprendre par un clic-droit sur le dossier source et le choix de Build Path > Configurer le Dossier de Sortie... qui doit afficher l'emplacement spécifié dans le pom pour le premier cas, toutefois, pas le cas.
C'est déjà un bug connu pour l'utilisation de la scala, avec m2e comme indiqué ici: http://scala-ide.org/docs/tutorials/m2eclipse/
Eclipse n'est pas rien attendre d'autre à coucher avec les fichiers de classe. Il suppose que si vous n'avez pas editted le fichier dans eclipse, il n'a pas changé et n'a pas besoin de compiler. Je pense que le problème découle de eclipse et maven partage d'un répertoire de sortie. J'ai souvent vu cela si mon mvn l'échec de la construction, il aura supprimé les fichiers de classe dans le cadre de la nettoyer, mais pas compilé de nouveaux. Je pense que la meilleure solution serait d'avoir séparé construire dirs pour mvn eclipse, mais je n'ai jamais regarder dans cette.
Mon problème n'était pas de la JUnit plugin, mais plutôt dans la configuration de mon pom.xml.
Après avoir examiné toutes les réponses à cette question, @Gulats réponse implicite à moi que je devrais essayer de définir une
testOutputDirectory
dans mon maven-compiler-plugin section, et qui a fait le tour: