Licence 3 Informatique – Génie Logiciel

Page 1 sur 3Lecteur de document UniversityLib

Licence 3 Informatique – Génie Logiciel

Programming, Software Engineering, Testing · lab

Voir tous les documents en génie logiciel

Licence 3 Informatique – Génie Logiciel

TP2 : Gradle & Mock & Test Unitaires

Objectifs

ü Savoir configurer Eclipse pour mettre en œuvre Gradle ü Utiliser des Mocks dans le cadre de tests unitaires

Exercice 1 : Mise en place de Gradle Dans cet exercice nous allons utiliser Gradle pour construire notre projet. Pour cela vous aurez besoin du plugin Buildship d’Eclipse. Ce plugin est normalement installé dans les salles de TP. Si vous souhaitez travailler sur votre machine, et qu’il n’est pas présent dans votre installation, vous pouvez le télécharger depuis le « market place » d’Eclipse.

Si Buildship est correctement installé, vous pouvez maintenant créer un projet Gradle dans Eclipse (Nouveau Projet -> Projet Gradle)

Consignes

ü Créez un nouveau projet Gradle ü Repérez les fichiers build.gradle et settings.gradle qui servent à configurer les

projets Gradle

Exercice 2 : Utilisation de Gradle pour la mise en place des outils Vous aurez besoin pour ce projet de Mockito pour la partie Mock. Pour cela, nous allons récupérer la librairie grâce à Gradle.

Consignes

ü Modifiez le fichier build.gradle pour ajouter la bibliothèque Mockito 2.x. Pour cela

o Ajoutez jcenter()dans la partie repositories {…} o Ajoutez testCompile "org.mockito:mockito-core:2.+" dans la partie

dependencies{…}

ü Exécutez le script gradle en faisant un clic droit sur votre projet et en sélectionnant

Publicité

dans le menu contextuel Gradle -> Refresh Gradle Project

Exercice 3 : Jeu de Dés (adapté d’un sujet de Sébastien Mosser) Dans cet exercice nous allons essayer de réaliser un jeu de dés relativement simple. L’objectif est de manipuler des doublures d’objets dans le cadre de tests unitaires.

Spécifications

ü Le dé a 6 faces et retourne un entier aléatoire entre 1 et 6 lorsqu’il est lancé.

Génie Logiciel

Licence 3 Informatique – Génie Logiciel

ü Le résultat d’un lancé de dé est associé à un Joueur qui est caractérisé par un nom et qui fourni la valeur de son dé. Par défaut (avant de lancer), la valeur du dé du joueur est fixée à -1 (Remarque : cette solution bien que générique n’est pas très élégante, il vaut mieux utiliser le type Optional introduit en Java 8 par exemple).

ü Le Joueur lance deux fois le dé et garde la valeur maximum. ü Lors d’un jeu de dé, deux joueurs s’affrontent et le joueur qui a le plus grand tirage gagne. Si les deux joueurs sont ex-aequo, ils recommencent. Si au bout de 5 essais ils sont toujours ex-aequo, il n’y a pas de vainqueur.

1. Le dé et son Test

Consignes

ü Ecrivez le test pour vérifier le comportement du dé. Vous devrez vous assurer que les tirages sont bien entre 1 et 6 (sinon une erreur de type RunTimeException est renvoyée mais nous le traiterons un peu plus loin).

ü Ecrivez également la classe Dé qui prendra en paramètre du constructeur un objet de type Random. Cela permet d’assurer la reproductibilité des tirages et cela va également nous permettre de tester l’exception. La classe Dé possède une seule méthode : public int lancer() ;

ü Ecrivez dans votre fichier de test une classe NoRandom qui hérite de Random et qui surcharge la méthode public int nextInt(int m) pour qu’elle renvoie toujours 7 ; ü Ecrivez un test permettant de vérifier que l’exception est bien levée lorsque l’on utilise

un objet NoRandom.

ü Modifiez maintenant votre test pour vérifier le comportement lorsque la valeur est

Publicité

inférieure à 1.

2. Amélioration des tests du dé avec Mockito

Pour l’instant nous ne nous somme toujours pas servi de Mockito. Cependant, l’écriture de la classe NoRandom est une solution de doublure. En effet, la classe nous permet de changer le comportement de la classe Random pour effectuer des tests spécifiques. Mockito va nous permettre de simplifier tout ça. En effet, écrire une nouvelle classe pour chaque classe à tester est relativement contraignant et tout déclarer dans la classe de test n’est pas crédible.

Consignes

ü Créez un mock permettant de reproduire le comportement de la classe Random et surchargez sa méthode nextInt(…) pour lui faire retourner la valeur dont vous avez besoin.

o Exemple pour tester une valeur supérieure à 6 :

Random tooMuch = mock(Random.class); when(tooMuch.nextInt(anyInt())).thenReturn(7);

3. Le joueur et son test

Consignes

ü Ecrivez le test permettant de vérifier le lancer d’un joueur. ü Ecrivez la classe Joueur pour passer votre test. Le constructeur du Joueur prendra en

paramètre le nom du joueur et le dé qu’il va utiliser

Génie Logiciel

Licence 3 Informatique – Génie Logiciel

ü Modifiez la classe Joueur pour garder le meilleur de deux lancés

Grâce aux objets de doublure il va être possible de tester que le joueur ne triche pas et qu’il ne lance pas le dé plusieurs fois. Pour cela nous allons créer un Mock qui va prendre la place du dé et compter le nombre de fois où l’on va utiliser la méthode lancer

Publicité

ü Modifiez votre test pour vérifier le nombre de lancés grâce au code suivant :

Dice mockDe = mock(Dice.class); … verify(mockDe, times(2)).lancer();

Sur le même principe, donnez une solution pour vérifier que le joueur conserve bien le maximum de deux tirages.

4. Le jeu de dé

Consignes

ü Ecrivez la classe de test permettant de la classe JeuDeDé qui va mettre aux prises deux

joueurs.

o Utilisez des mocks pour contrôler le gagnant et pouvoir faire votre test que le

vainqueur est bien correct

o Utiliser des mocks pour vérifier que le cas où il n’y a pas de gagnant est bien

traité

ü Ecrivez la classe de JeuDedé

Génie Logiciel