Recherche

Coder's IO

Tag

Unitaire

Connaitre les outils de tests c’est bien!

 

Assurer la qualité d’une application passe inévitablement par la mise en place d’une couverture de test. Qu’ils soient unitaires, d’intégration, fonctionnels, etc.

Avoir cette volonté est une très bonne chose. Encore faut-il savoir le faire correctement… 🙂
La première brique à cet ambitieux édifice est le test unitaire. Mais sait-on réellement écrire des tests unitaires pertinents, qui ont du sens, qui couvrent correctement le code de notre application ?

En Java, il existe pas mal de frameworks de tests permettant de mettre une couverture de tests en place.

Pour répondre aux questions ci-dessus, +David Gageot  a créé deux formations permettant d’apprendre ou de se perfectionner dans ce domaine :
– les tests de A à Z
– Bootcamp tests / TDD

Ces deux formations sont respectivement dispensées sur 2 et 4 jours.
L’objectif de ces formations est d’apprendre ou se perfectionner dans l’art d’écrire des tests unitaires (entre autres).

Vous trouverez tous les détails sur le lien attaché à ce post.

N’hésitez pas à tester 😉

#java   #formation   #test   #unitaire  

PowerMock

 

Les tests unitaires sont un point central dans un projet informatique; Ils garantissent (en partie) la stabilité du code couvert.
Ils doivent avertir le développeur d'un changement de comportement d’une portion de code. Dans certain cas ce changement est normal car une règle métier a changée;dans d'autre cas cela peut être dû à un impact collatéral sur composant, à priori, sans rapport avec l'évolution qui vient d'être faite.
 
Avoir une couverture de test unitaire la plus large possible sur l'ensemble du code de notre application permet de se prémunir des régression potentielle.
 
La famille des outils permettant d'écrire des tests unitaires est assez grande. On y trouve différents frameworks permettant d'adresser l'ensemble des contraintes que l'on peut rencontrer lorsque l'on écrit des tests unitaires.

Dans les applications que nous développons, nous travaillons généralement avec des APIs externes, du code legacy, etc.
Ce type de code, sur lequel nous n’avons pas forcément la main, peut poser des problèmes lors de l’écriture d’un test unitaire dépendant de ces composants.
Dans les bonnes pratiques d’écriture de test unitaire, il faut bouchonner (mocker) tout ce qui n’est pas directement lié au code à tester.

Pour cela, on utilise des frameworks de mock comme : 
– EasyMock,
– Mockito,
– JMock.

Ce sont les plus connus. Avec ces outils on pourra bouchonner : 

– Tous les composants fournissant une interface,
– Aussi les composants basés sur des classes non finale.

Sur ces bouchons on ajoutera des comportements permettant de positionner un contexte d’exécution au test unitaire cible. Les comportements seront du type :

Lorsque tu appelles telle méthode de ma classe, renvoies moi tel objet
Cette méthode ne jamais être appelée
Cette méthode doit être appelée au moins N fois

Bon c’est un tout petit rappel sur la mission attribuée à un framework de mock.

Malgré les possibilités offertes par ces frameworks, il existe des limitations : 

– Mocker une classe déclarée finale,
– Mocker des méthodes déclarées privées,
– Mocker des méthodes statique,
– By-passer le constructeur d’une classe,
– Mocker partiellement une classe.

Toutes ces problématiques sont adressées par PowerMock et de manière très élégante.
En effet, à l’aide de deux annotations, toute la puissance de l’outil se retrouve dans vos tests unitaires et vous évite d’installer pas mal de plomberie pour pouvoir tester dans de bonnes conditions votre code.

PowerMock s’intégre parfaite (des extensions sont proposées) avec EasyMock, Mockito et aussi TestNG.

La dernière release du projet a été faite au mois de mai de cette année.
Le wiki fournit beaucoup de documentation et d’exemples, ce qui permet de prendre l’outil en main très rapidement.

Je pense qu’il apporte un vrai plus dans l’écriture de test unitaire. Il repousse les limites imposées par le langage et permet de rendre nos tests beaucoup plus robuste et exhaustif.

Mettez les bouchons doubles! 🙂 

Il existe, dans le même registe, JDave : http://jdave.org/

#java #test #mockito #powermock #mock #test #unitaire

MoreUnit

Faire des tests unitaires représente toujours un coût dans la réalisation d’un développement.
Les étapes pour réaliser un test unitaire sont :
– Que va t-on tester,
– Comment va t-on le tester,
– Créer la classe de test,
– Ecrire le code du test.

Aussi sur un projet, on peut se poser les questions suivantes :
– Tiens, est-ce que cette classe/méthode est couverte par un test unitaire ?
– Je sais qu’il existe un test unitaire pour cette classe, mais où est-il ?
-…

MoreUnit propose d’adresser certaines étapes et questions vues ci-dessus.

MoreUnit est un plugin Eclipse. Il propose de travailler de manière plus confortable lorsque l’on créé des tests unitaires.
Les principales fonctionnalités permettant d’atteindre cet objectif sont :
– Création assistée de la classe de test à partir d’un raccourci clavier (nom et emplacement normalisés),
– Navigation fluide entre classe d’implémentation et test unitaire à partir d’un raccourci clavier
– Indicateur dans l’arborescence du projet des classes couvertes par un test unitaire.
– Indicateur dans la classe des méthodes couvertes par un test unitaire.
– Supporte le refactoring des classes (Si une classe est renommée, alors le test sera renommé en conséquence, idem si la classe change de package ou est supprimée)
– Lancement du test unitaire associé à la classe d’implémentation couramment affichée.
– Support de plusieurs frameworks de Mock (lors de la création d’un test unitaire, MoreUnit est capable de mocker les dépendances externes de la classe automatiquement).
– Une vue spécifique à MoreUnit est proposée.
– Un point d’extension possible sur la phase de génération des classes de test unitaire.

Toutes les fonctionnalités proposées ci-dessus par MoreUnit font que l’écriture de test est beaucoup plus efficace.

La force et la particularité de cet outil est qu’il adresse les aspects de productivité et d’efficacité sur la phase de création et de maintenance des tests unitaires, plutôt que de proposer un nouveau framework de type JUnit-like.

#java #test #unitaire #qualité #efficacité #productivité

Propulsé par WordPress.com.

Retour en haut ↑

Concevoir un site comme celui-ci avec WordPress.com
Commencer