cobertura sur maven multi projet de module
J'ai un projet Maven avec 4 modules de 3 d'entre eux contiennent de code et des tests (tests equals et hashcode de la classe) alors que le 4ème module est pour tester les 3 autres modules.
Maintenant je veux exécuter la couverture de couverture de code outil pour obtenir une vue d'ensemble des classes sont bien testés et qui ne le sont pas. J'ai fait quelques recherches sur le sujet et il semble que la couverture n'est pas au courant de générer le bon code pourcentages de couverture et de la ligne de protections, si certaines sources qui ont été testés sont situés dans d'autres modules.
J'ai lu sur certains liens comme SeamTestCoverageWithCobertura et En utilisant le plugin de la Couverture au sein d'un multi-module Maven 2 mais il y a un hors de la zone de la solution. Quelqu'un peut-il le rapport de certaines nouvelles orientations sur ce sujet? Ou il y a bether des outils comme couverture? J'ai trébuché sur emma, mais cet outil n'offre pas de couverture de ligne...
Vous devez vous connecter pour publier un commentaire.
À partir de la version 2.6, il est un agrégat option peut être définie sur true dans le pom parent:
mvn cobertura:cobertura -Dcobertura.aggregate=true -Dcobertura.report.format=xml
Vous pouvez modifier le format de rapport que vous le souhaitez. Selon la cobertura plugin maven du dépôt github, cette fonctionnalité est disponible depuis v2.5 (commit 64a8823).Nous n'avons pas de sonar ici et maintenant, on ne peut pas l'installer. J'ai donc dû trouver une solution de contournement et obtenu un. Cette solution fonctionne avec un simple
mvn clean install -DrunCobertura=true
dans un multi projet de module. Vous avez seulement besoin d'ajouter ce profil à votresuper pom.xml
de votre projet, de définir lesworking.dir
bien et cela devrait fonctionner.Quoi faire:
1.
@process-classes
-Instrument de la compilation des classes du module.2.
@generate-test-sources
-Fusionne les.ser
fichier à partir de modules précédents avec la création de ce module pour obtenir le code complet de la couverture.3.
@test
-Crée le rapport de couverture de code. Doit être appelée dans le dernier module, mais en raison du fait que le dernier module peut changer, je l'appelle toujours et les précédents rapports seront écrasées. Si vous utilisez le rapport dexml
format (pour Jenkins) c'est rapide, donc il n'a pas d'importance.Selon MCOBERTURA-65, le maven cobertura plugin ne sait toujours pas comment faire pour compiler des rapports des sous-modules dans un consolidés. Un certain travail a été fait pour mettre en œuvre un
merge
cible sur le maven cobertura plugin (voir MCOBERTURA-33) mais ce code n'a pas été inclus dans le plugin encore. Je n'ai pas testé le patch moi-même et ne peux pas dire si elle vaut la peine d'essayer.En conséquence, beaucoup de gens en effet vous suggérons d'utiliser le maven tableau de bord plugin mais je serais personnellement de rester loin d'elle car elle n'est pas très satisfaisant sur le long terme et j'ai fait face à beaucoup de problèmes avec elle (problèmes techniques, la perte de l'histoire,...). Au lieu de cela, je vous le recommande chaudement Sonar. Jetez un oeil à Nemo, une instance publique de la dernière version de Sonar, pour une démonstration en direct de cet outil. Voir, par exemple, la Communes De L'Autoclave projet et la forer vers le bas de la couverture de code.
Il y a quelques plugins qui regroupent Cobertura (et d'autres) des rapports. Découvrez la sonar et XRadar plugins. Il y a aussi le tableau de bord plugin, mais il est un peu maladroit.
FWIW Emma ne faire la couverture en ligne.
Je tiens vraiment à remercier Sven Oppermann pour la soumission de son runCobertura profil de la solution. Cela a permis de
me résoudre la question de " comment obtenez-vous l'agrégat des rapports de couverture pour le multi-projets de module lorsque que vous pourriez ne pas être
en mesure d'utiliser le Sonar.
J'ai créé un exemple qui montre comment créer des multi-module des projets qui produisent des rapports de couverture de code qui permettent d'évaluer non seulement l'unité de la couverture de test (dans tous les submodules), mais aussi de la couverture sur les TESTS d'INTÉGRATION APPORTER
VOTRE APPLICATION EN TANT QUE .LA GUERRE DANS LA JETÉE. L'exemple est hébergé ici:
La recette que je suis en fournissant est assez ré-utilisable si vous copiez le runCobertura profil énumérés ci-dessous (sur la base d'une
fournir par Sven.)
Voici quelques notes qui vous aideront à utiliser ce profil:
l'intégration du module de test qui lance jetée (et définit les tests qui vont à l'encontre
la production .la guerre doit être nommée web-test-driver-pour-couverture de code, ou vous
doit modifier les instructions dans le runCobertura bloc de configuration.
vos rapports de couverture apparaîtra à l'endroit où vous définissez votre variable
vous DEVEZ inclure "propre" sur la ligne de commande lorsque vous exécutez votre construction de la couverture de code. "propre" va souffler avant cobertura.fichiers ser,
qui, si la gauche qui rôdent autour de peut causer beaucoup de confusion rapports pour être
généré (un signe que vous avez besoin pour "nettoyer" est que les rapports montrent
100% de couverture pour tout, y compris des trucs que vous savez n'est jamais appelée.
le module web-test-driver-pour-couverture de code définit un contexte de servlet auditeur explicitement les bouffées de chaleur de la couverture des paramètres pour disque
lorsque le serveur web s'arrête. Soi-disant le conteneur est censé le faire automatiquement, mais cela ne fonctionne pas pour moi, donc
J'ai eu à le crochet dans l'appel explicite à débusquer les paramètres.
les tests d'intégration sont fait en groovy, parce que je me suis basé sur certaines de projet maven squelettes qui ont déjà utilisé groovy.
Désolé pour le désordre, mais il ne vous montrer comment faire vos tests en groovy (ce qui est hautement recommandé de toute façon.)
Noter que lorsque vous compilez avec l'runCobertura profil de tous vos objets sont créés avec cobertura de l'instrumentation, et même de votre
.la guerre de fichier. Vous ne voulez JAMAIS laisser sortir dans la production de cours (pour une chose, il irait realllll lent.) Je n'ai pas
encore compris l'alimentation de façon à obtenir les objets de renommer eux-mêmes, afin que la cobertura-ness " est évidente.
Thomas Sundberg offre une solution intéressante dans lequel l'instrumentation et de test se fait via
ant
, mais tous les essais et la gestion de la dépendance viamvn
.Vérifier Ici: thomassundberg wordpress
Cela signifie que vous devez exécuter les commandes ci-dessous, au niveau du parent dans cet ordre:
L'intégration de ces mesures dans
sonar
est décrit par Martijn Stelinga.test-couverture-en-multi-modules-projets
J'ai pu mettre en œuvre quelque chose d'assez similaire à ce que vous avez besoin grâce à cette réponse: Maven - ajouter la dépendance de l'artefact source
J'ai juste ajouté
<classifier>sources</classifier>
et cobertura comprend les classes de dépendances ainsi.Ce qui concerne.