Testen in Swift (iOS/macOS): Frameworks und Werkzeuge

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

Testen in Swift (iOS/macOS): Frameworks und Werkzeuge



Die Entwicklung qualitativ hochwertiger Anwendungen für Apple-Plattformen ist ohne systematisches Testen nicht möglich. Im Swift-Ökosystem hat sich ein leistungsstarker Satz von Werkzeugen etabliert, der alle Ebenen abdeckt – von Modultests über UI-Tests bis hin zur statischen Analyse. In diesem Artikel betrachten wir die wichtigsten Frameworks und Praktiken, die Ihnen helfen, die Zuverlässigkeit Ihres Codes zu erhöhen und die Entwicklung zu beschleunigen.



1. XCTest – die Grundlage des Testens

XCTest ist das integrierte Apple-Framework, das in Xcode verfügbar ist. Es bietet grundlegende Funktionen zum Schreiben von Unit-Tests, UI-Tests und Leistungstests. XCTest ist in den Xcode Test Navigator integriert und unterstützt die Ausführung sowohl auf Simulatoren als auch auf echten Geräten.

Beispiel eines einfachen Unit-Tests für das Modell Calculator:

import XCTest@testable import MyApp

final class CalculatorTests: XCTestCase { var calculator: Calculator!

override func setUpWithError() throws { calculator = Calculator() }

override func tearDownWithError() throws { calculator = nil }

func testAddition() throws { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "Die Addition sollte korrekt sein") }

func testDivisionByZero() throws { XCTAssertThrowsError(try calculator.divide(10, 0)) { error in XCTAssertEqual(error as? CalculatorError, .divisionByZero) } }}

Wichtige Funktionen von XCTest:

  • XCTAssert – eine Reihe von Assertions (Gleichheit, Wahrheit, Fehlerauslösung)
  • setUp/tearDown – Lebenszyklus der Testklasse
  • measure – Messung der Leistung von Codeblöcken
  • UI-Tests – Aufzeichnung und Wiedergabe von Interaktionen mit der Benutzeroberfläche


2. Quick und Nimble – BDD-Stil

Quick ist ein Framework für Behaviour-Driven Development (BDD), das es ermöglicht, Tests in natürlicher Sprache zu beschreiben. Nimble ist eine Matcher-Bibliothek, die die Möglichkeiten von Assertions erweitert. Zusammen machen sie die Tests für das gesamte Team lesbar, einschließlich Manager und Analysten.

Beispiel eines Tests mit Quick/Nimble:

import Quickimport Nimble@testable import MyApp

class LoginSpec: QuickSpec { override func spec() { describe("LoginViewController") { var viewController: LoginViewController!

beforeEach { viewController = LoginViewController() _ = viewController.view // Laden der View }

context("wenn korrekte Daten eingegeben wurden") { it("sollte die Autorisierungsmethode aufrufen") { viewController.emailTextField.text = "user@example.com" viewController.passwordTextField.text = "password123" viewController.loginButtonTapped() expect(viewController.isAuthorized).to(beTrue()) } }

context("wenn das Passwort leer ist") { it("sollte einen Fehler anzeigen") { viewController.emailTextField.text = "user@example.com" viewController.passwordTextField.text = "" viewController.loginButtonTapped() expect(viewController.errorLabel.isHidden).to(beFalse()) } } } }}
  • describe/context/it – hierarchische Struktur der Spezifikationen
  • beforeEach/afterEach – Hooks zur Vorbereitung des Zustands
  • expect(...).to(...) – lesbare Überprüfungen mit vielen Matchern


3. SnapshotTesting – visuelles Testen

Die Bibliothek SnapshotTesting von Point-Free erlaubt

Empfehlungen