Aller directement à la fin des métadonnées
Aller au début des métadonnées

TP 2 : tests unitaires

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.

rebound.png

 

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:

  1. Téléchargez mockito mockito-all-1.10.19.jar
  2. Créez un nouveau répertoire lib dans votre projet
  3. Copiez ici le jar de mockito
  4. 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).
  • Aucune étiquette