0Pricing
Swift Academy · Leçon

Configuration de XCTestCase, démontage et méthodes de test

Structurer les classes de test avec setUp/tearDown et nommer les méthodes de test.

Configuration de XCTestCase, démontage et méthodes de test est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Bases de XCTestCase

XCTestCase est la classe de base de tous les tests unitaires Swift. Chaque méthode commençant par « test » constitue un cas de test.

import XCTest

final class MathTests: XCTestCase {
  func testAddition() {
    XCTAssertEqual(2 + 2, 4)
  }
}

setUp et tearDown

setUp() s'exécute avant chaque test. tearDown() s'exécute après chaque test. Utilisez-les pour initialiser l'état partagé et effectuer le nettoyage.

final class UserServiceTests: XCTestCase {
  var sut: UserService!
  override func setUp() {
    super.setUp()
    sut = UserService()
  }
  override func tearDown() {
    sut = nil
    super.tearDown()
  }
}

setUpWithError et tearDownWithError

Variantes de setUp/tearDown qui peuvent lever une erreur : si la configuration lève une erreur, le test est automatiquement marqué comme échoué.

override func setUpWithError() throws {
  sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
  try sut.cleanup()
}

Configuration au niveau de la classe

class setUp() et class tearDown() s'exécutent une seule fois avant et après tous les tests de la classe : ils sont utiles pour les ressources partagées coûteuses.

final class DBTests: XCTestCase {
  static var db: TestDatabase!
  override class func setUp() {
    super.setUp()
    db = TestDatabase.inMemory()
  }
  override class func tearDown() {
    db.close()
    super.tearDown()
  }
}

Nommage des méthodes de test

Nommez les tests selon le modèle test_methodName_condition_expectedResult afin de faciliter la lecture et de rendre les messages d'échec explicites.

func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }

addTeardownBlock

Enregistrez des blocs de nettoyage propres à chaque test directement dans le code, sans redéfinir tearDown.

func testCreateFile() throws {
  let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
  addTeardownBlock { try? FileManager.default.removeItem(at: url) }
  // ... test
}

Désactivation des tests

Préfixez une méthode de test par _ ou mettez-la en commentaire pour l'ignorer. XCTest permet également de l'ignorer avec XCTSkipIf.

func testExperimentalFeature() throws {
  try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
  // ... test
}

Les méthodes de test ne peuvent pas lever d'erreur (avant Xcode 16)

Dans les anciennes versions de Xcode, les méthodes de test déclarées avec throws transmettent les erreurs comme des échecs de test via XCTAssertNoThrow.

func testDecode() throws {
  let user = try JSONDecoder().decode(User.self, from: validJSON)
  XCTAssertEqual(user.name, "Alice")
}

Faire échouer explicitement un test

Appelez XCTFail("reason") pour forcer l'échec d'un test avec un message descriptif.

func testCallback() {
  var called = false
  service.doWork { called = true }
  if !called { XCTFail("Callback was never invoked") }
}

Plans de test

Les plans de test Xcode vous permettent d'exécuter les mêmes tests avec différentes configurations (langue, variables d'environnement, outils de détection).

// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address Sanitizer

Tests parallèles

Activez les tests parallèles dans les réglages du schéma Xcode pour exécuter simultanément les classes de test et réduire la durée totale des tests.

// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global state

Vérification rapide

Quelle méthode de XCTestCase s'exécute une seule fois avant tous les tests de la classe, et non avant chaque test individuel ?

Récapitulatif de la leçon

Redéfinissez setUp/tearDown (ou leurs variantes pouvant lever une erreur) pour la configuration et le nettoyage propres à chaque test. Utilisez class setUp/tearDown pour les ressources initialisées une fois par classe. Nommez les tests de manière descriptive. Utilisez addTeardownBlock pour le nettoyage intégré au code et XCTSkipIf pour ignorer conditionnellement des tests.

Questions Fréquemment Posées

La leçon « Configuration de XCTestCase, démontage et méthodes de test » est-elle gratuite ?

Oui — le texte complet de « Configuration de XCTestCase, démontage et méthodes de test » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Configuration de XCTestCase, démontage et méthodes de test » ?

Structurer les classes de test avec setUp/tearDown et nommer les méthodes de test. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.

Combien de temps prend la leçon « Configuration de XCTestCase, démontage et méthodes de test » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration de XCTestCase, démontage et méthodes de test
  2. Famille XCTAssert et assertions générant des erreurs
  3. Simulation fondée sur des protocoles et injection de dépendances
  4. Tests asynchrones et mesure des performances
← Retour à Swift Academy