Skip to content
Learni
Voir tous les tutoriels
Tests & Qualité

Comment créer des tests avec XCTest en 2026

12 minBEGINNER
Read in English

Introduction

XCTest est le framework officiel d'Apple pour les tests unitaires et d'interface sur iOS, macOS et tvOS. Il permet de vérifier que votre code se comporte comme prévu avant même de lancer l'application. Dans ce tutoriel, nous allons créer un target de test, écrire des assertions simples et exécuter les tests directement dans Xcode. Maîtriser XCTest dès le début améliore la qualité du code et réduit les régressions lors des mises à jour.

Prérequis

  • Xcode 16 ou supérieur
  • Connaissances de base en Swift
  • Un projet iOS existant (ou nouveau projet vide)

Ajouter un target de test

Xcode Project
// Dans Xcode : File > New > Target...
// Choisir iOS Unit Testing Bundle
// Nom : MyAppTests
// Language : Swift

Créer un target de test séparé permet d'isoler le code de test du code de production et d'utiliser les outils de couverture de code intégrés.

Créer la classe de test

MyAppTests.swift
import XCTest
@testable import MyApp

final class MyAppTests: XCTestCase {
    override func setUpWithError() throws {
        // Code exécuté avant chaque test
    }

    override func tearDownWithError() throws {
        // Code exécuté après chaque test
    }
}

La classe hérite de XCTestCase. setUp et tearDown garantissent un environnement propre pour chaque test.

Écrire un premier test simple

MyAppTests.swift
func testAddition() throws {
    let result = 2 + 2
    XCTAssertEqual(result, 4, "L'addition devrait donner 4")
}

XCTAssertEqual est l'assertion la plus courante. Le message d'erreur s'affiche uniquement en cas d'échec.

Tester une fonction réelle

Calculator.swift
// Fichier source
struct Calculator {
    func multiply(_ a: Int, _ b: Int) -> Int {
        return a * b
    }
}

On teste une fonction réelle du projet principal en important le module avec @testable.

Ajouter le test pour la fonction

MyAppTests.swift
func testMultiply() throws {
    let calc = Calculator()
    let result = calc.multiply(3, 4)
    XCTAssertEqual(result, 12)
}

Chaque méthode commençant par test est automatiquement exécutée par Xcode.

Bonnes pratiques

  • Nommez vos tests de façon descriptive (testNomFonction_Scenario_ResultatAttendu)
  • Testez un seul comportement par méthode
  • Utilisez @testable import pour accéder aux types internal
  • Exécutez les tests à chaque commit via Xcode ou la ligne de commande

Erreurs courantes à éviter

  • Oublier d'importer le module avec @testable
  • Utiliser des valeurs en dur sans setup clair
  • Ne pas tester les cas limites (0, nil, valeurs négatives)
  • Laisser des tests qui dépendent de l'ordre d'exécution

Pour aller plus loin

Découvrez nos formations complètes sur les tests iOS et Swift : https://learni-group.com/formations