Tests d'intégration Swift avec Docker : guide complet

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

Tests d'intégration Swift avec Docker : guide complet



Les tests d'intégration sont une étape clé du développement d'applications Swift de qualité. Ils vérifient comment différents modules, services et dépendances externes interagissent entre eux. Docker simplifie ce processus en fournissant un environnement isolé, facilement reproductible sur n'importe quelle machine. Dans cet article, nous verrons comment configurer les tests d'intégration d'un projet Swift en utilisant Docker, avec des exemples pour iOS et macOS.



Pourquoi utiliser Docker pour les tests d'intégration Swift ?



Les tests traditionnels des applications Swift souffrent souvent de problèmes d'environnement : différentes versions de bases de données, de serveurs, de bibliothèques. Docker résout ces problèmes :



  • Isolation : chaque test s'exécute dans un conteneur propre, ce qui élimine l'influence des autres processus.
  • Reproductibilité : environnement identique en local, sur le serveur CI et chez les autres développeurs.
  • Déploiement rapide : les conteneurs se lancent en quelques secondes, pas en minutes.
  • Passage à l'échelle : facile d'exécuter des tests parallèles avec différentes versions de dépendances.


Docker est particulièrement utile pour tester les interactions réseau, les bases de données (par exemple PostgreSQL ou Redis) et l'architecture de microservices.



Configuration de l'environnement Docker pour Swift



Pour commencer, créons un projet Swift simple et configurons Docker. Supposons que nous ayons une application qui fonctionne avec une base de données PostgreSQL.



1. Création du projet Swift



Créez un nouveau projet avec Swift Package Manager :



mkdir SwiftIntegrationTestcd SwiftIntegrationTestswift package init --type executable


Ajoutons une dépendance pour travailler avec PostgreSQL. Ouvrez Package.swift et ajoutez :



// swift-tools-version:5.9import PackageDescription

let package = Package( name: "SwiftIntegrationTest", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .executableTarget( name: "SwiftIntegrationTest", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]), .testTarget( name: "SwiftIntegrationTestTests", dependencies: ["SwiftIntegrationTest"]) ])


2. Dockerfile pour Swift



Créez un fichier Dockerfile à la racine du projet :



FROM swift:5.9-focal

WORKDIR /app

# Copie des fichiers du projetCOPY Package.swift .COPY Sources/ ./Sources/COPY Tests/ ./Tests/

# Construction du projet (sans les tests pour accélérer)RUN swift build -c release

# Commande d'exécution des testsCMD ["swift", "test", "--enable-test-discovery"]


3. Docker Compose pour les dépendances



Créez docker-compose.yml pour exécuter les tests avec PostgreSQL :



version: '3.8'

services: postgres: image: postgres:16 environment: POSTGRES_DB: testdb POSTGRES_USER: testuser POSTGRES_PASSWORD: testpass ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U testuser -d testdb"] interval: 5s timeout: 5s retries: 5

swift-tests: build: . depends_on: postgres: condition: service_healthy environment: DATABASE_HOST: postgres DATABASE_PORT: 5432 DATABASE_NAME: testdb DATABASE_USER: testuser DATABASE_PASSWORD: testpass


Rédaction de tests d'intégration en Swift



Écrivons maintenant un test qui vérifie la connexion à la base de données et l'exécution d'une requête.



1. Classe pour travailler avec la base de données



Créez le fichier Sources/SwiftIntegrationTest/DatabaseService.swift :




                
                

Blogs

Book Recommendations