TD 2 : tests unitaires
PhilippeCollet
Le retour de la créature
Téléchargez
creaturesLab2.zip et créez un nouveau projet pour ce TD. L'archive contient
- une correction de SmartCreature
- quelques changements dans l'organisation de certaines méthodes
- le code d'une BouncingCreature :
- elle change de direction aléatoirement après un certain nombres d'étapes (voir la partie "noise")
- elle est supposée rebondir sur les bords de l'environnement
Mais cette BouncingCreature est buggée. Exécutez l'application et observez... Il va falloir corriger tout cela.
Exercice 1 : premier test sur le rebond
Dans un premier temps :
- Réfléchissez sur l'organisation des tests :
- Que faut-il tester ? Que peut-on vraiment tester ? Quelle classe et quelle méthode ?
- Comment réaliser le test ? Quel(s) objet(s) initialiser pour le test ?
- Créez le premier test (utiliser le wizard de création de testCase, il incluera la bibliothèque JUnit 4 automatiquement dans votre projet)
Exercice 2 : le jeu des 3 erreurs
Il y a en fait 3 erreurs dans BouncingCreature (dans la gestion du rebond). Trouvez les tests qui les caractérisent, puis corrigez les.
Exercice 3 : objets mock
Utiliser directement l'environnement n'est pas une bonne idée : le thread associé s'exécute en arrière-plan et peut appeler la méthode act() avant votre test unitaire. S'il faut modifier du code existant c'est le signe qu'il faut utiliser un
mock.
Set up:
- Téléchargez mockito mockito-all-1.9.5.jar
- Créez un nouveau répertoire
lib
dans votre projet
- Copiez ici le jar de mockito
- clic droit sur le jar et sélectionnez
Build Path -> Add to build path
Modifiez les précédents tests pour utiliser un mock de l'Environment : pensez à mocker (when...) les méthodes uniquement utiles pour le test (cad celles qui vont être appelées par le code de act()...).
Exercise 4: test de l'émergence
- Créez un seul test (avec un mock) pour vérifier le fonctionnement correct de l'algorithme d'émergence de SmartCreature.
- Ajoutez des instructions "verify" de mockito pour s'assurer des interactions entre la créature et son environnement (quels appels doivent être faits par l'algorithme).
--
PhilippeCollet - 29 Oct 2014
to top