Licence 3 Informatique – Génie Logiciel

Programming, Software Engineering, Testing · lab

Browse all génie logiciel documents

Licence 3 Informatique G nie Logiciel

TP2 : Gradle & Mock & Test Unitaires

Objectifs

Savoir configurer Eclipse pour mettre en Suvre 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 dEclipse. Ce plugin est normalement install dans les salles de TP.

Si vous souhaitez travailler sur votre machine, et quil nest pas pr sent dans votre installation,

vous pouvez le t l charger depuis le market place dEclipse.

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

Advertisement

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

dans le menu contextuel Gradle -> Refresh Gradle Project

Exercice 3 : Jeu de D s (adapt dun sujet de S bastien Mosser)

Dans cet exercice nous allons essayer de r aliser un jeu de d s relativement simple. Lobjectif

est de manipuler des doublures dobjets dans le cadre de tests unitaires.

Sp cifications

Le d a 6 faces et retourne un entier al atoire entre 1 et 6 lorsquil est lanc .

G nie Logiciel

Licence 3 Informatique G nie Logiciel

Le r sultat dun 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 nest 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 dun jeu de d , deux joueurs saffrontent 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

Advertisement

sont toujours ex-aequo, il ny 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 dassurer la reproductibilit des tirages et cela va galement

nous permettre de tester lexception. 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 quelle renvoie toujours 7 ;

Ecrivez un test permettant de v rifier que lexception est bien lev e lorsque lon utilise

un objet NoRandom.

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

inf rieure 1.

2. Am lioration des tests du d avec Mockito

Pour linstant 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

Advertisement

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 nest 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 dun joueur.

Ecrivez la classe Joueur pour passer votre test. Le constructeur du Joueur prendra en

param tre le nom du joueur et le d quil 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 quil

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 lon va utiliser la m thode lancer

Advertisement

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 ny a pas de gagnant est bien

trait

Ecrivez la classe de JeuDed

G nie Logiciel