XCTestCase: Setup, Teardown und Testmethoden
Strukturieren Sie Testklassen mit setUp/tearDown und benennen Sie Testmethoden.
XCTestCase: Setup, Teardown und Testmethoden ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Grundlagen von XCTestCase
XCTestCase ist die Basisklasse für alle Swift-Unit-Tests. Jede Methode, die mit „test“ beginnt, ist ein Testfall.
import XCTest
final class MathTests: XCTestCase {
func testAddition() {
XCTAssertEqual(2 + 2, 4)
}
}setUp und tearDown
setUp() wird vor jedem Test ausgeführt. tearDown() wird nach jedem Test ausgeführt. Verwenden Sie beide für die Initialisierung und Bereinigung gemeinsam genutzter Zustände.
final class UserServiceTests: XCTestCase {
var sut: UserService!
override func setUp() {
super.setUp()
sut = UserService()
}
override func tearDown() {
sut = nil
super.tearDown()
}
}setUpWithError und tearDownWithError
Die fehlerwerfenden Varianten von setUp/tearDown: Wenn das Setup einen Fehler auslöst, wird der Test automatisch als fehlgeschlagen markiert.
override func setUpWithError() throws {
sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
try sut.cleanup()
}Setup auf Klassenebene
class setUp() und class tearDown() werden einmal vor bzw. nach allen Tests der Klasse ausgeführt – nützlich für aufwendige gemeinsam genutzte Ressourcen.
final class DBTests: XCTestCase {
static var db: TestDatabase!
override class func setUp() {
super.setUp()
db = TestDatabase.inMemory()
}
override class func tearDown() {
db.close()
super.tearDown()
}
}Testmethoden benennen
Benennen Sie Tests für bessere Lesbarkeit und klare Fehlermeldungen nach dem Muster test_methodName_condition_expectedResult.
func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }addTeardownBlock
Registrieren Sie Bereinigungsblöcke pro Test direkt an der jeweiligen Stelle, ohne tearDown zu überschreiben.
func testCreateFile() throws {
let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
addTeardownBlock { try? FileManager.default.removeItem(at: url) }
// ... test
}Tests deaktivieren
Setzen Sie einer Testmethode _ voran oder kommentieren Sie sie aus, um sie zu überspringen. XCTest unterstützt das Überspringen außerdem mit XCTSkipIf.
func testExperimentalFeature() throws {
try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
// ... test
}Testmethoden können nicht throws verwenden (vor Xcode 16)
In früheren Xcode-Versionen geben als throws deklarierte Testmethoden Fehler über XCTAssertNoThrow als Testfehler weiter.
func testDecode() throws {
let user = try JSONDecoder().decode(User.self, from: validJSON)
XCTAssertEqual(user.name, "Alice")
}Einen Test ausdrücklich fehlschlagen lassen
Rufen Sie XCTFail("reason") auf, um einen Test mit einer beschreibenden Meldung gezielt fehlschlagen zu lassen.
func testCallback() {
var called = false
service.doWork { called = true }
if !called { XCTFail("Callback was never invoked") }
}Testpläne
Mit Xcode-Testplänen können Sie dieselben Tests mit unterschiedlichen Konfigurationen ausführen (Sprache, Umgebungsvariablen, Sanitizer).
// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address SanitizerParallele Tests
Aktivieren Sie parallele Tests in den Scheme-Einstellungen von Xcode, um Testklassen gleichzeitig auszuführen und die Gesamttestzeit zu verkürzen.
// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global stateKurze Überprüfung
Welche XCTestCase-Methode wird einmal vor allen Tests der Klasse ausgeführt (nicht vor jedem einzelnen Test)?
Zusammenfassung der Lektion
Überschreiben Sie setUp/tearDown (oder die fehlerwerfenden Varianten) für Setup und Bereinigung pro Test. Verwenden Sie class setUp/tearDown für Ressourcen, die einmal pro Klasse eingerichtet werden. Benennen Sie Tests aussagekräftig. Verwenden Sie addTeardownBlock für Bereinigungen direkt an der jeweiligen Stelle und XCTSkipIf zum bedingten Überspringen.
Häufig gestellte Fragen
Ist die Lektion „XCTestCase: Setup, Teardown und Testmethoden“ kostenlos?
Ja — der vollständige Text von „XCTestCase: Setup, Teardown und Testmethoden“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „XCTestCase: Setup, Teardown und Testmethoden“?
Strukturieren Sie Testklassen mit setUp/tearDown und benennen Sie Testmethoden. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „XCTestCase: Setup, Teardown und Testmethoden“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- XCTestCase: Setup, Teardown und Testmethoden
- Die XCTAssert-Familie und auslösende Assertions
- Protokollbasiertes Mocking und Dependency Injection
- Asynchrone Tests und Leistungsmessung