XCTest — Tests en Swift (iOS/macOS)

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Qu'est-ce que XCTest et pourquoi en avez-vous besoin ?

XCTest est un framework intégré d'Apple pour les tests unitaires, fonctionnels et de performance des applications Swift (iOS, macOS, watchOS, tvOS). Il est l'équivalent de bibliothèques comme pytest pour Python ou JUnit pour Java, mais totalement intégré à Xcode et Swift Package Manager. XCTest permet de vérifier automatiquement le bon fonctionnement de fonctions individuelles, de classes, de composants d'interface utilisateur et de requêtes réseau, ce qui est essentiel pour maintenir la qualité du code lors du développement d'applications natives.

Comment installer XCTest ?

XCTest est fourni avec Xcode et ne nécessite pas d'installation séparée. Pour commencer, créez simplement un nouveau projet dans Xcode et ajoutez une cible de test (iOS Unit Testing Bundle ou macOS Unit Testing Bundle). Si vous utilisez Swift Package Manager, ajoutez simplement la dépendance import XCTest dans votre fichier de test. Pour l'intégration avec CI/CD (par exemple, GitHub Actions), ajoutez le script : xcodebuild test -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 14'.

Fonctionnalités principales de XCTest

  • Tests unitaires (Unit Tests) — vérification de méthodes et classes individuelles à l'aide de XCTAssert.
  • Tests de performance — mesure du temps d'exécution de blocs de code via measure.
  • Tests d'interface utilisateur (UI Tests) — automatisation des interactions avec l'interface via XCUIApplication.
  • Tests asynchrones — gestion des attentes via XCTestExpectation.
  • Tests paramétrés — exécution d'un même test avec différentes données d'entrée (via des boucles).

Exemple de code en Swift (iOS)

import XCTest

class CalculatorTests: XCTestCase { var calculator: Calculator!

override func setUp() { super.setUp() calculator = Calculator() }

override func tearDown() { calculator = nil super.tearDown() }

func testAddition() { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "Attendu 5, reçu \\(result)") }

func testPerformanceExample() { measure { _ = calculator.add(1000, 2000) } }

func testAsyncNetwork() { let expectation = self.expectation(description: "Chargement des données") NetworkService.fetchData { data in XCTAssertNotNil(data) expectation.fulfill() } waitForExpectations(timeout: 5) }}

Quand utiliser XCTest ?

XCTest est obligatoire pour tous les projets commerciaux iOS/macOS, surtout si vous travaillez en équipe ou prévoyez une publication sur l'App Store. Il aide à prévenir les régressions lors du refactoring, accélère les revues de code et automatise la vérification de l'interface utilisateur. Pour tester les requêtes réseau et les interactions avec la base de données, XCTest est combiné avec des mocks (par exemple, OHHTTPStubs). Si vous écrivez une bibliothèque en Swift, XCTest est la norme de facto, car il est entièrement pris en charge par Xcode et Swift Package Index.

Recommendations