Nous y sommes ! Le moment dont vous avez rêvé est arrivé ! Nous allons enfin créer nos tests !
Pour cela nous allons procéder en trois étapes :
Nous allons d'abord créer une target, dans laquelle nous allons écrire tous nos tests.
Nous allons ajouter un fichier de tests dans la nouvelle target.
Nous allons écrire nos tests dans ce fichier.
C'est parti !
Créer une target
Le concept de target
Euh c'est quoi une target ?
Xcode fonctionne par projet. Quand vous démarrez Xcode, vous ouvrez un projet dans lequel se trouve pour le moment une seule target : votre application. Un projet peut en fait contenir plusieurs targets.
Par exemple, vous pouvez avoir plusieurs versions d'une même application, une version pro et une version normale. Ces deux applications sont suffisamment proches pour faire partie du même projet, mais elles ne sont pas identiques, donc elles vont être des targets différentes.
Les tests ne font pas partie de l'application. Ils se comportent comme un module à part et donc nous allons les créer dans une target à part.
Créer la target
Pour créer cette target, rien de plus simple, suivez le guide !
1/ Sélectionnez le projet dans le navigateur.
2/ Cliquez sur le +
en bas à droite du panneau central.
3/ Dans la pop-up qui s'ouvre, choisissez l'onglet iOS.
4/ Dans la barre de recherche en haut à droite, vous pouvez taper "test".
5/ Xcode ne vous propose plus que 2 types de target à tester. Choisissez iOS Unit Testing Bundle pour créer des tests unitaires.
6/ Cliquez sur Next
.
7/ Xcode vous propose de contrôler les paramètres de votre nouvelle target. Ce sont les mêmes qu'à la création d'un projet Xcode. À l'exception des deux derniers qui vous permettent de préciser le projet dans lequel créer la target ainsi que la target qui va être testée, ici c'est bien notre application. Cliquez sur Finish
pour créer la target.
Et voilà notre target est créée ! Elle est visible dans la liste des targets et un nouveau dossier a été créé dans le navigateur.
Ajoutez un fichier de test
Comme vous l'avez remarqué, la target contient déjà un fichier de test nommé JeuSetMatchTests.swift
. Vous pouvez le supprimer, car son nom ne nous convient pas. Nous allons en créer un nouveau.
Pour cela, sélectionnez le dossier JeuSetMatchTests
puis faites cmd+n (ou aller dans File > New > File...). Choisissez Unit Test Case Class. Puis cliquez sur Next
.
Nommez ensuite votre fichier GameTestCase
, car nous allons commencer par tester la classe Game
. Et cliquez sur Next
.
Enfin, vérifiez bien que la target sélectionnée est bien celle des tests. Et cliquez sur create
.
Et voilà votre premier fichier de test est créé et vous pouvez le retrouvez dans votre navigateur !
Présentation de XCTestCase
Regardons maintenant un peu le fichier que nous venons de créer.
Nous commençons par importer XCTest
qui est le framework de test d'Xcode. Puis nous créons une classe GameTestCase
qui est une sous-classe de XCTestCase
.
XCTestCase
est une classe qui permet de faire des tests comme son nom l'indique. À chaque fois que vous voudrez faire des tests, il vous faudra créer une sous-classe de XCTestCase
. Dans ce cours, nous en créerons trois en tout : GameTestCase
, SetTestCase
, MatchTestCase
. Elles reprennent les trois classes de notre modèle et dans chacune de ces sous-classes, nous allons pouvoir ajouter plusieurs tests.
Votre premier test
Je vous propose de supprimer tout le contenu de la classe. Nous verrons au fur et à mesure à quoi tout cela sert. Votre code doit ressembler à ceci :
import XCTest
class GameTestCase: XCTestCase {
}
Ajouter le test
Et maintenant, ajoutons notre tout premier test ! Pour créer un test, c'est très simple ! Il suffit d'ajouter à notre classe une méthode qui commence par le mot test
. Par exemple :
func testMaMethode() {} // Ceci est un test
func maMethode() {} // Ceci n'est pas un test
Je vous propose de rajouter le test suivant comme ceci :
class GameTestCase: XCTestCase {
func testExemple() {
}
}
XCTAssert
Maintenant nous allons remplir ce test ! Je vous l'ai dit : un test, c'est l'évaluation d'un booléen. Si le booléen est évalué à true
, le test est réussi, sinon le test échoue.
La fonction qui évalue le booléen s'appelle XCTAssert
et prend en paramètre... un booléen !
Essayez d'écrire dans le test :
func testExemple() {
XCTAssert(true)
}
La fonction va évaluer que le booléen vaut true
. Et donc le test va réussir.
Lancer le test
Pour voir le test réussir, il vous suffit de cliquer sur le petit losange à gauche du nom du test. Le test se lance et après quelques minutes d'un insoutenable suspens... le test est réussi !
Maintenant, réitérez l'expérience en remplaçant true
par false
. Relancez le test, et... il échoue !
Je vous invite à jouer avec la méthode XCTAssert
et le lancement des tests. Par exemple, essayez les commandes suivantes :
XCTAssert(2*2 == 4)
XCTAssert(true || false)
XCTAssert(true && false)
XCTAssert(365%7 == 0)
XCTAssert([1, 2, 3, 4].count == [5, 6, 7, 8].count)
Il y a différentes façons de lancer les tests :
Pour lancer tous les tests de votre projet, vous pouvez utiliser le raccourci cmd + u.
Pour lancer tous les tests d'une classe, vous pouvez cliquer sur le losange à côté de la déclaration de la classe.
Pour lancer un seul test, on clique sur le losange à côté du test.
Exercice
Je vous propose de créer les deux autres fichiers de tests : SetTestCase.swift
et MatchTestCase.swift
. Il suffit de reprendre les étapes vues ensemble ! Bonne chance !
En résumé
Pour créer des tests, il faut rajouter une target. L'application est dans une target, les tests dans une autre et ces deux targets appartiennent à un même projet Xcode.
Ensuite, il faut créer un fichier de test dans lequel on crée une sous-classe de
XCTestCase
.Pour créer un test, il faut créer une méthode dont le nom commence par le mot
test
.La fonction
XCTAssert
permet d'évaluer un booléen, s'il vauttrue
, le test réussit et inversement.Pour lancer les tests, on peut cliquer sur les losanges ou faire
cmd+u
.
Dans le prochain chapitre, nous allons tester toute la classe Game
!