2010-11-29 15 views
5

J'ai 2 projets Maven, une pour les sources: ProjSource, contenant une classe: classe A .. et un autre: ProjTest contenant une classe de test pour Class- Un de classe A-Test. Je souhaite que ma classe de test soit exécutée lorsque j'appelle mvn: install sur ProjSource.Invoke teste des cours d'un autre projet Maven

Quelle est la manière la plus simple d'effectuer une telle chose? Notez que mon expérience avec les tests unitaires est très basique .. Je ne sais pas comment dire à Maven que Class-A-Test est conçu pour tester la Classe-A ..

J'ai suivi les étapes décrites en utilisant le maven-jar -plugin avec pot-test Objectif here et définir le résultat * ** * ** * -tests.jar comme une dépendance pour ProjSource avec:

<type>test-jar</type> 
<scope>test</scope> 

mais quand je exécuter un mvn: installer, la sortie dit que: "Il n'y a pas de tests à exécuter". Ai-je manqué quelque chose?

Toute aide est très appréciable, et merci d'avance!

Cordialement,

Répondre

3
  1. ne le font pas de cette façon. Le moyen de le faire est d'avoir des sources standard sous src/main/java et des sources de test sous src/test/java. Par défaut, les sources standard seront ajoutées au JAR résultant, tandis que les tests dans le répertoire source du test seront exécutés automatiquement. C'est un comportement bien testé, pourquoi le changer? Si vous voulez/avez besoin d'un jar de test, appelez jar: test-jar dans le fichier pom.xml de ce projet et utilisez le plugin buildhelper à attach the resulting artifact pour le déploiement. De cette façon, vous pouvez conserver la disposition de projet standard et avoir toujours un pot de test.

  2. Si vous insistez pour le faire, vous devrez le faire dans l'autre sens. Le projet de test devrait avoir une dépendance au projet principal (vous ne pouvez pas tester ce que vous ne savez pas). Je suggère de simplement mettre le code de test dans src/test/java dans le projet de test, alors la magie de maven peut fonctionner par défaut. Insérez également du texte en gras ci-dessus.

Mais la raison pour laquelle le cycle de vie de Maven a été défini comme il était est que les tests ont échoué sont censés échouer la construction. Il ne sert à rien de construire une bibliothèque qui ne fait pas ce qu'elle est censée faire.

+0

Merci Floyd, j'ai essayé votre suggestion mais malheureusement cela n'a pas fonctionné .. Maintenant j'essaye de trouver un moyen de dire à Maven que mes classes de test sont emballées dans un fichier JAR, et d'aller chercher ce pot quand l'exécution de la "phase de test". est proche de ce que je recherche, mais cette balise n'accepte qu'un dossier en tant que source, pas un JAR .. veuillez noter que ce sont les exigences de mon entreprise, tous les tests sont emballés dans un Jar (fait avant de commencer maven ...) –

+0

un pot de test? Si c'est le problème, consultez ma réponse mise à jour. –