TDD - Le développement piloté par les tests
Exemple TDD en Java
Objectifs
Le but de cet exemple est de décrire chaque étape de la méthode TDD à travers un exemple simple et pratique. L'exemple sera codé en Java et l'outil de test unitaire utilisé est JUnit.
L'objectif fonctionnel de l'exemple est le suivant :
On souhaite créer un jeu d'action ou le héros principal est un loup. Il est demandé à ce que le loup puisse tourner dans le
sens des aiguilles d'une montre (Orientation nord, est, sud et ouest). De plus il est précisé que le loup doit débuter le jeu
à la position nord.
Application en image de la méthode TDD
Création de la classe de test TestLoup et du minimum d'implémentation :
Dans un premier temps, comme la méthode TDD le suggère, la classe de test est d'abord créé avant l'implémentation.
Voici le code :
Le but est tout d'abord de tester que le loup commence au nord et C'est pourquoi le nom de la méthode de test porte le nom testPositionInitialeAuNord.
Les erreurs de compilation signalent que l'objet Loup et Orientation n'existent pas. La méthode employée est donc la bonne, en écrivant les tests
on considère que nous avons besoin de tel objet et méthode pour respecter une règle fonctionnelle. Ici, en l'occurrence il est nécessaire de disposer de
l'objet Loup (qui sera créé par la suite) ainsi que d'introduire la notion d' orientation (qui pourra par exemple être de type énumération).
Dans le but de corriger les erreurs de compilation il faut créer les objets Loup et Orientation avec le minimum d'information.
Voici les implémentation minimum pour l'objet Loup et Orientation :
Loup :

Orientation :

Execution du test et constater qu'il échoue :

Le test échoue et cela est normal car l'implémentation complète n'a pas encore été faite.
Implémentation pour faire valider le test :
Le loup devant commencer à l'orientation NORD, un champ orientation est créé et il est initialisé lors de la construction de l'objet à la bonne valeur.
Voici le code corrigé :

On contrôle que les tests passent désormais :

Ajout d'une méthode de test et du minimum d'implémentation :
Il est maintenant souhaité de trouver un moyen pour que le loup puisse tourner selon le sens des aiguilles d'une montre. Pour cela les tests vont d'abord être rédigés comme précédemment.
Voici le code de test

Ici, la méthode tourner a été imaginé pour faire tourner l'objet Loup et la nouvelle méthode testTournerUneFois contrôle qu'une fois après avoir tourné le loup qui est au départ
à la position NORD passe ensuite à la position EST. Le minimum de l'implémentation a été écrit afin que le code compile.
Execution du test et constater que la méthode testTournerUneFois échoue :

Implémentation de la méthode tourner pour faire valider le test :
Voici le code corrigé :

On contrôle que les tests passent désormais :

Remaniement du code de la méthode tourner :
Il est possible de modifier la méthode tourner pour la rendre plus compréhensible et facilement modifiable.
Voici la correction apportée à la classe Loup :

On contrôle que les tests passent toujours suite aux modifications :
