Eclipse plugin Eclemma

De EjnTricks

Dans le cadre de développement, une part importante doit être accordée sur les tests unitaires. Cela peut être contrôlé à l'aide de l'outil Sonar par un chef de projet. Cependant, chaque développeur doit pouvoir contrôler son travail avant la mise à disposition de ses modifications. Le plugin Eclemma sous Eclipse va permettre à chacun d'effectuer un audit du code couvert, ligne et les branches, localement.

Dans le cadre de cet article, le projet maven multi module sera pris comme exemple.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


System-Install-icon.png Installation

Comme tout plugin Eclipse, son installation peut être réalisée depuis le gestionnaire de module. Il est également possible de télécharger les jars depuis le site officiel, et de les mettre à disposition au niveau du répertoire d'installation de Eclipse.

Pour cet article, la version 2.2.1 a été utilisée et contient les fichiers suivants:

+--- eclemma-2.2.1
|   +--- features
|   |   +--- com.mountainminds.eclemma.feature_2.2.1.201306092145.jar
|   +--- plugins
|   |   +--- com.mountainminds.eclemma.asm_2.2.1.201306092145.jar
|   |   +--- com.mountainminds.eclemma.core_2.2.1.201306092145.jar
|   |   +--- com.mountainminds.eclemma.debug.ui.compatibility_2.2.1.201306092145.jar
|   |   +--- com.mountainminds.eclemma.doc_2.2.1.201306092145.jar
|   |   +--- com.mountainminds.eclemma.ui_2.2.1.201306092145.jar
|   |   +--- org.jacoco.agent_0.6.3.201306030806.jar
|   |   +--- org.jacoco.core_0.6.3.201306030806.jar
|   |   +--- org.jacoco.report_0.6.3.201306030806.jar


Process-Icon.png Utilisation

L'utilisation du plugin se base sur l'exécution des tests unitaires sous Eclipse. Dans le menu Run, il est possible de relancer le dernière test unitaire avec couverture de code.


Dans le cadre de cet exemple, le test unitaire UserServiceImplTest est exécuté. La classe testée se situe dans le projet jouvinio-service dépendant de trois projets :

  • jouvinio-dao
  • jouvinio-daoImpl
  • jouvinio-datas

Par défaut, le plugin va effectuer un audit sur l'intégralité du code source, la classe cible mais également le code du test unitaire ainsi que les sources des projets dépendants.


Icon-Configuration-Settings.png Paramétrage

Dans le précédent exemple, tous les fichiers sources ont été audités. Il peut être souhaité de filtrer l'audit uniquement sur le module cible, à savoir jouvinio-service. Pour cela, il faut sélectionner les répertoires sources à prendre en compte lors de l'audit. Ce paramétrage est accessible depuis le menu de configuration de Eclemma, via le menu Coverage Configurations ... depuis l'icône du plugin.


La fenêtre de paramétrage est alors affichée. Dans celle-ci, tous les répertoires sources de l'environnement de travail sont cochés.


Il faut alors sélectionner les répertoires à prendre en compte. Dans le cadre de projet Maven, les répertoires de ressources sont inutiles, ainsi que ceux pour le code des tests unitaires. Par conséquent, seul le répertoire source main/java du projet jouvinio-service.


Lors de l'exécution de l'audit, les résultats présentent cette restriction.


Study icon.png Interprétation

Sur le résumé de l'audit, il est possible de voir le pourcentage de couverture de test en fonction des classes et des packages. En double cliquant sur une classe, le code source est présenté avec des couleurs sur chacune des lignes.


Le code couleur est assez simple :

  • vert : la ligne est entière couverte.
  • rouge : aucun test unitaire n'entraîne l'exécution de la ligne.
  • orange : La ligne est partièlement couverte. Dans le cas de conditions de tests, intructions if / boucles, tous les cas ne sont pas couverts.


Par défaut, l'affichage du résumé s'effectue sur un bandeau vertical dont la largeur est limitée et ne présente pas forcément tous les chiffres sans effectue un défilement. Cependant, celui-ci présente pour chacune des classes une information sur :

  • Le taux de couverture, attention cela est uniquement sur les lignes couvertes.
  • Le nombre de lignes couvertes.
  • Le nombre de lignes non couvertes.
  • Le nombre total de lignes.


Lorsque les branches ne sont pas totalement couverte, la couleur orange est utilisée. Mais le plugin présente également une aide en ligne indique le nombre de branche couverte par rapport au nombre total des possibilités. Pour cela, il faut survoler la puce en face de la ligne cible.


Examples-icon.png Astuce

Viewer icon.png Coloration couverture

Lors de l'exécution de la couverture de tests, le code source est agrémenté de couleur comme vu dans le premier exemple. Par contre, cela devient vite gênant. Celle-ci disparait dès qu'une modification sur le fichier est réalisée. Mais qu'en est il si l'on souhaite supprimer la coloration sur l'ensemble des sources ?

Suppression de la coloration uniquement pour la session en cours de visualisation.
Suppression de la coloration uniquement pour toutes les sessions exécutées.

Multiples-icon.png Multiples sessions

Dans le cas du projet pris pour exemple, il est possible d'exécuter des couvertures de tests sur chaque des modules. En prenant le cas de trois exécutions sur les modules :

jouvinio-daoImpl
jouvinio-datas
jouvinio-service

Il est possible de basculer d'une session à une autre facilement à l'aide du bouton de sélection.

Le menu présente l'ensemble des sessions disponibles. Après sélection, les résultats de la session choisie sont affichés comme présentés ci dessus.


Il est également possible de regrouper / fusionner les sessions exécutées afin de présenter un ensemble de résultats en un seul affichage. Pour cela, il faut utiliser le bouton de merge.

L'utilisateur est alors invité à sélectionner les sessions d'exécution à fusionner.

Dans le cadre de cet exemple, toutes les sessions sont sélectionnées. Puis en cliquant sur le bouton OK, les résultats des sessions sélectionnées sont présentés en un seul résumé.


Viewer icon.png Voir aussi

Documentation officielle: http://www.eclemma.org