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