• 15 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/6/21

Créez votre premier test

Nous y sommes ! Le moment dont vous avez rêvé est arrivé ! Nous allons enfin créer nos tests !

Meme des deux écureuils qui hurlent : Enfin les tests les tests enfin !
Bon Tic et Tac, ça suffit ! Vous déconcentrez tout le monde !

Pour cela nous allons procéder en trois étapes :

  1. Nous allons d'abord créer une target, dans laquelle nous allons écrire tous nos tests.

  2. Nous allons ajouter un fichier de tests dans la nouvelle target.

  3. 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.

Impression d'écran de l'ajout d'une target

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.

Impression d'écran du choix de la target

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.

Impression d'écran de la création de 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.

Impression d'écran de la target dans Xcode. 

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.

Impression d'écran du choix du type de fichier

Nommez ensuite votre fichier GameTestCase, car nous allons commencer par tester la classe Game. Et cliquez sur Next.

Impression d'écran du choix du nom du fichier.

Enfin, vérifiez bien que la target sélectionnée est bien celle des tests. Et cliquez sur create.

Impression d'écran de la création du fichier

Et voilà votre premier fichier de test est créé et vous pouvez le retrouvez dans votre navigateur !

Impression d'écran du fichier de test créé.

Présentation de XCTestCase

Regardons maintenant un peu le fichier que nous venons de créer.

Impression d'écran du fichier de tests.

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 : GameTestCaseSetTestCaseMatchTestCase. 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 !

Impression d'écran du test réussi.

Maintenant, réitérez l'expérience en remplaçant true par false. Relancez le test, et... il échoue !

Impression d'écran du test échoué.

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 vaut true, 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 !

Example of certificate of achievement
Example of certificate of achievement