XCTest für Swift: Komplette Anleitung mit Beispielen
1. Was ist XCTest und warum braucht man es?
XCTest ist das standardmäßige Framework für Unit-Tests und UI-Tests von Apple-Anwendungen. Es ist direkt in Xcode integriert und das wichtigste Werkzeug, um die Korrektheit von Swift- und Objective-C-Code zu überprüfen. XCTest bietet Entwicklern eine leistungsstarke und flexible API zum Schreiben, Organisieren und Ausführen von Tests – von einfachen Einzelfunktionsprüfungen bis hin zu komplexen Integrationstests und Tests der Benutzeroberfläche.
Warum ist XCTest wichtig? In der modernen Softwareentwicklung ist Testen kein Luxus, sondern eine Notwendigkeit. XCTest automatisiert die Code-Überprüfung, was für die langfristige Qualitätssicherung einer App entscheidend ist. Damit können Sie:
- Regressionen erkennen: Nach Code-Änderungen führen Sie schnell Tests aus und stellen sicher, dass neue Funktionen nichts Bestehendes beschädigen.
- Code dokumentieren: Gut geschriebene Tests dienen als lebendige Dokumentation, die zeigt, wie ein bestimmter Teil des Systems funktionieren soll.
- Architektur verbessern: Das Bestreben, Code testbar zu machen, führt oft zu einer saubereren, modulareren und lose gekoppelten Architektur.
- Entwicklung beschleunigen: Statt die App manuell zu starten und immer wieder dieselben Aktionen auszuführen, starten Sie Ihre Tests mit einem Klick.
XCTest ist auf allen Ebenen in Xcode integriert: von der Erstellung von Testzielen (Test Targets) bis zur Anzeige der Ergebnisse im übersichtlichen Test Navigator. Es unterstützt parallele Testausführung, Performance-Tests und asynchrone Tests, was es zu einer universellen Lösung für Projekte jeder Größe macht.
2. Einrichtung
XCTest wird nicht über Paketmanager wie pip oder npm installiert. Es ist Teil des Apple-Ökosystems und wird mit Xcode ausgeliefert. Für die Nutzung sind keine zusätzlichen Befehle erforderlich.
So beginnen Sie mit dem Schreiben von Tests in Xcode:
- Öffnen Sie Ihr Projekt.
- Wählen Sie im Menü File → New → Target.
- Wählen Sie im erscheinenden Fenster den Tab Test und dann Unit Testing Bundle (oder UI Testing Bundle für UI-Tests).
- Klicken Sie auf Next, geben Sie einen Namen für das Ziel ein (z. B. "YourAppNameTests") und klicken Sie auf Finish.
Xcode erstellt automatisch eine Vorlagendatei, in die Sie Ihre Tests einfügen können. Ein Import von XCTest im Code ist nicht nötig, da es automatisch mit dem Testziel verknüpft wird.
Für Projekte, die den Swift Package Manager (SPM) verwenden, ist XCTest ebenfalls ohne zusätzliche Schritte verfügbar. Wenn Sie ein Paket mit dem Befehl swift package init --type executable oder --type library erstellen, legt SPM automatisch ein Testverzeichnis Tests mit den erforderlichen Dateien an.
3. Schnellstart – Minimales Arbeitsbeispiel
Betrachten wir ein einfaches Beispiel. Angenommen, wir haben eine Struktur Calculator, die wir testen möchten:
// Datei: Sources/Calculator.swift
struct Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
func subtract(_ a: Int, _ b: Int) -> Int {
return a - b
}
}
Jetzt erstellen wir eine Testdatei (Xcode erstellt sie automatisch, wenn Sie der obigen Anleitung gefolgt sind):
// Datei: Tests/MyProjectTests/CalculatorTests.swift
import XCTest
@testable import MyProject // Ersetzen Sie MyProject durch den Namen Ihres Moduls
final class CalculatorTests: XCTestCase {
func testAddition() {
// 1. Arrange (Vorbereitung) Auch in der Bibliothek
Arbeiten mit Bildern in Swift: resize und crop für iOS/macOS
PDF-Generierung in C++: Überblick über Bibliotheken und Codebeispiele
Überwachung von C# (.NET)-Anwendungen mit AppMetrics