Integrations-Tests für Swift mit Docker: Vollständiger Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Integrationstests von Swift mit Docker: Vollständige Anleitung



Integrationstests sind ein entscheidender Schritt bei der Entwicklung hochwertiger Swift-Anwendungen. Sie überprüfen, wie verschiedene Module, Dienste und externe Abhängigkeiten miteinander interagieren. Docker vereinfacht diesen Prozess, indem es eine isolierte Umgebung bereitstellt, die auf jedem Rechner einfach reproduziert werden kann. In diesem Artikel betrachten wir, wie man Integrationstests für ein Swift-Projekt mit Docker einrichtet, einschließlich Beispielen für iOS und macOS.



Warum Docker für Integrationstests von Swift verwenden?



Traditionelle Tests von Swift-Anwendungen leiden oft unter Umgebungsproblemen: verschiedene Versionen von Datenbanken, Servern, Bibliotheken. Docker löst diese Probleme:



  • Isolation: Jeder Test wird in einem sauberen Container ausgeführt, was den Einfluss anderer Prozesse ausschließt.
  • Reproduzierbarkeit: Gleiche Umgebung lokal, auf dem CI-Server und bei anderen Entwicklern.
  • Schnelle Bereitstellung: Container starten in Sekunden, nicht Minuten.
  • Skalierbarkeit: Einfaches Ausführen paralleler Tests mit verschiedenen Versionen von Abhängigkeiten.


Docker ist besonders nützlich für das Testen von Netzwerkinteraktionen, Datenbanken (z.B. PostgreSQL oder Redis) und Microservices-Architekturen.



Einrichtung der Docker-Umgebung für Swift



Zunächst erstellen wir ein einfaches Swift-Projekt und richten Docker ein. Nehmen wir an, wir haben eine Anwendung, die mit einer PostgreSQL-Datenbank arbeitet.



1. Erstellen eines Swift-Projekts



Erstellen Sie ein neues Projekt mit dem Swift Package Manager:



mkdir SwiftIntegrationTestcd SwiftIntegrationTestswift package init --type executable


Fügen wir eine Abhängigkeit für die Arbeit mit PostgreSQL hinzu. Öffnen Sie Package.swift und fügen Sie hinzu:



// 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 für Swift



Erstellen Sie eine Datei Dockerfile im Projektstammverzeichnis:



FROM swift:5.9-focal

WORKDIR /app

# Projektdateien kopierenCOPY Package.swift .COPY Sources/ ./Sources/COPY Tests/ ./Tests/

# Projekt bauen (ohne Tests, um zu beschleunigen)RUN swift build -c release

# Befehl zum Ausführen der TestsCMD ["swift", "test", "--enable-test-discovery"]


3. Docker Compose für Abhängigkeiten



Erstellen Sie docker-compose.yml zum Ausführen der Tests mit 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


Schreiben von Integrationstests in Swift



Jetzt schreiben wir einen Test, der die Datenbankverbindung und die Ausführung einer Abfrage überprüft.



1. Klasse für die Datenbankarbeit



Erstellen Sie eine Datei Sources/SwiftIntegrationTest/DatabaseService.swift:




                
                

Blogs

Buchempfehlungen