Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Tests unitaires et couverture de code (code coverage)

JUnit 5.x Utilisation de « Mock objects »



Accès rapide :
La vidéo
Introduction
Le plugin EclEmma d'intégration pour JaCoCo
Installation d'EclEmma
Utilisation d'EclEmma
Le plugin eCobertura d'intégration pour Cobertura

La vidéo

Cette vidéos vous montre comment obtenir un calcul de taux de couverture de code (Code Coverage) en Java en utilisant les outils EclEmma et JaCoCo.


Tests unitaires et couverture de code (code coverage)

Introduction

Ecrire des tests unitaires pour vérifier vos codes, c'est bien ! Mais Qu'elle est la quantité de code de votre application qui est réellement testé ? Souvent, on pense en avoir une idée et on se trompe. Avoir un indicateur fiable sur le nombre de lignes de code mis en jeu par votre procédure de test est donc important. C'est ce que propose de vous calculer un outil de couverture de code (code coverage en anglais).

En Java, il existe plusieurs outils de calcul de taux de couverture de code. Parmi eux, nous pouvons citer :

Dans les deux cas, ces outils peuvent être démarrés en mode ligne de commande. Mais il existe aussi, pour chacun d'eux, un plugin d'intégration dans Eclipse. C'est plus sur ces plugins d'intégration que je vais porter mon attention dans ce chapitre.

Le plugin EclEmma d'intégration pour JaCoCo

Le plugin d'intégration de JaCoCo se nomme EclEmma (lors de la bascule d'Emma vers JaCoCo, l'équipe de développement n'a pas changé le nom de ce plugin). Fort de sa notoriété et de sa qualité, il est devenu un projet officiel de la Fondation Eclipse. Vous trouverez la page d'accueil du projet EclEmma sur le site Eclipse.

Depuis quelques temps, ce plugin est installé de base dans un Eclipse orienté Java. Si tel est votre cas, vous pouvez directement commencer à l'utiliser. Dans le cas contraire, la section suivante vous montre comment l'installer.

Installation d'EclEmma

Pour installer le plugin EclEmma sur votre Eclipse, veuillez ouvrir le menu « Help » et y sélectionner l'assistant « Install New Software... ». La boite de dialogue suivante doit s'ouvrir : vous pouvez utiliser le champ de recherche pour limiter le nombre de plugins installables.

Installation de plugin EclEmma

Accepter le contrat de licence et procédez à l'installation du plugin. Au terme de l'installation, Eclipse devra être redémarré car les plugins sont chargés au lancement d'Eclipse.

Utilisation d'EclEmma

Vous pouvez lancer n'importe quel bout de code Java avec le support du Code Coverage, qu'il s'agisse du programme à proprement parler ou un ensemble de tests JUnit. Pour ce faire, il faut choisir l'assistant de lancement dans le menu contextuel « Coverage As / Junit Test », comme le montre la capture d'écran suivante.

Lancement de la couverture de code sur notre jeu de tests

Une fois lancé, le plugin EclEmma doit ouvrir une nouvelle vue Eclipse en bas de l'écran : c'est la vue « Coverage ». Voici à quoi ressemble cette vue.

Les résultats produit par le plugin EclEmma

Ce qu'on constate rapidement, c'est que notre procédure de test ne couvre que 58% de notre code source. Cela sous-entend que 42% du code n'a pas été vérifié et qu'il peut donc y avoir des régressions. Clairement, ce n'est pas suffisant est la procédure de test doit être enrichie pour monter au-delà de 90%.

obtenir 100% de couverture de code sur une batterie de tests est quasiment impossible. Cela voudrait dire que tous les cas d'erreurs (tous les catch) possibles seraient déclenchés par la batterie de tests. Par contre, plus de 90% de couverture de code doit être un objectif à atteindre. A vous de faire au mieux

Pour identifier les portions de code no testées, vous avez deux outils fort pratiques. Le premier, c'est l'arborescence dans la vue « Coverage ». Déployez-la pour localiser les méthodes non déclenchées par la batterie de tests.

Analyse des résultats produit par le plugin EclEmma

Vous pouvez constater que le constructeur qui transforme une donnée de type double en un rationnel n'a jamais été lancé durant l'exécution du jeu de tests. Vous pouvez rajouter un test à la classe RationalTest pour améliorer ce point.

Le second outil permettant de visualiser les portions de code non testées est intégré directement dans l'éditeur Java. Il surligne en vert les lignes de code exécutées et en rouge les lignes de code non exécutées. Cet outil permet de confirmer que le constructeur acceptant un double en paramètre n'a pas été utilisé par la procédure de tests.

Analyse des résultats produit par le plugin EclEmma

Le plugin eCobertura d'intégration pour Cobertura

Le plugin eCorbertura est non officiel et doit donc être installé à partir du Marketplace Eclipse. Pour ce faire, veuillez ouvrir le menu « Help » et y sélectionner l'assistant « Eclipse Marketplace... ». Une fois que la boîte de dialogue ouverte, recherchez le plugin eCobertura et installez-le. Accepter le contrat de licence et procédez à l'installation du plugin. Au terme de l'installation, Eclipse devra être redémarré car les plugins sont chargés au lancement d'Eclipse.

Son fonctionnement est assez similaire à celui de EclEmma.



JUnit 5.x Utilisation de « Mock objects »