0Pricing
Swift Academy · Lekcja

Konfiguracja XCTestCase, sprzątanie i metody testowe

Strukturyzowanie klas testowych za pomocą setUp/tearDown i nazywanie metod testowych.

Konfiguracja XCTestCase, sprzątanie i metody testowe to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.

Podstawy XCTestCase

XCTestCase to klasa bazowa wszystkich testów jednostkowych Swift. Każda metoda zaczynająca się od „test” jest przypadkiem testowym.

import XCTest

final class MathTests: XCTestCase {
  func testAddition() {
    XCTAssertEqual(2 + 2, 4)
  }
}

setUp i tearDown

setUp() jest uruchamiana przed każdym testem. tearDown() jest uruchamiana po każdym teście. Używaj ich do inicjalizowania współdzielonego stanu i sprzątania.

final class UserServiceTests: XCTestCase {
  var sut: UserService!
  override func setUp() {
    super.setUp()
    sut = UserService()
  }
  override func tearDown() {
    sut = nil
    super.tearDown()
  }
}

setUpWithError i tearDownWithError

Warianty setUp/tearDown zgłaszające błędy: jeśli konfiguracja zgłosi błąd, test zostanie automatycznie oznaczony jako nieudany.

override func setUpWithError() throws {
  sut = try UserService(config: loadTestConfig())
}
override func tearDownWithError() throws {
  try sut.cleanup()
}

Konfiguracja na poziomie klasy

class setUp() i class tearDown() są uruchamiane raz przed wszystkimi testami w klasie lub po nich — przydają się w przypadku kosztownych współdzielonych zasobów.

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()
  }
}

Nazywanie metod testowych

Nazywaj testy według schematu test_methodName_condition_expectedResult, aby zapewnić czytelność i jasne komunikaty o błędach.

func test_login_withValidCredentials_returnsUser() throws { ... }
func test_login_withInvalidPassword_throwsUnauthorized() throws { ... }

addTeardownBlock

Rejestruj bloki sprzątania dla poszczególnych testów bezpośrednio w kodzie, bez nadpisywania tearDown.

func testCreateFile() throws {
  let url = FileManager.default.temporaryDirectory.appendingPathComponent("test.txt")
  addTeardownBlock { try? FileManager.default.removeItem(at: url) }
  // ... test
}

Wyłączanie testów

Dodaj prefiks _ do metody testowej lub zakomentuj ją, aby ją pominąć. XCTest obsługuje również pomijanie za pomocą XCTSkipIf.

func testExperimentalFeature() throws {
  try XCTSkipIf(ProcessInfo.processInfo.environment["CI"] != nil, "Skip on CI")
  // ... test
}

Metody testowe nie mogą zgłaszać błędów (przed Xcode 16)

We wcześniejszych wersjach Xcode metody testowe zadeklarowane jako throws propagują błędy jako niepowodzenia testów za pośrednictwem XCTAssertNoThrow.

func testDecode() throws {
  let user = try JSONDecoder().decode(User.self, from: validJSON)
  XCTAssertEqual(user.name, "Alice")
}

Jawne oznaczanie testu jako nieudanego

Wywołaj XCTFail("reason"), aby wymusić niepowodzenie testu z opisowym komunikatem.

func testCallback() {
  var called = false
  service.doWork { called = true }
  if !called { XCTFail("Callback was never invoked") }
}

Plany testów

Plany testów Xcode pozwalają uruchamiać te same testy z różnymi konfiguracjami, takimi jak język, zmienne środowiskowe czy sanitizery.

// File → New → Test Plan
// Add test targets and configure per-configuration env vars
// Useful for running localized UI tests or with Address Sanitizer

Testowanie równoległe

Włącz testowanie równoległe w ustawieniach schematu Xcode, aby uruchamiać klasy testowe jednocześnie i skrócić łączny czas testów.

// Product → Scheme → Test → Options → Execute in parallel
// Each XCTestCase class runs in a separate process
// Ensure tests are independent and don't share global state

Szybkie sprawdzenie

Która metoda XCTestCase jest uruchamiana raz przed wszystkimi testami w klasie, a nie przed każdym pojedynczym testem?

Podsumowanie lekcji

Nadpisuj setUp/tearDown lub ich warianty zgłaszające błędy, aby konfigurować i sprzątać stan dla każdego testu. Używaj class setUp/tearDown dla zasobów tworzonych raz na klasę. Nadawaj testom opisowe nazwy. Używaj addTeardownBlock do sprzątania bezpośrednio w kodzie oraz XCTSkipIf do warunkowego pomijania testów.

Często zadawane pytania

Czy lekcja „Konfiguracja XCTestCase, sprzątanie i metody testowe” jest bezpłatna?

Tak — pełny tekst „Konfiguracja XCTestCase, sprzątanie i metody testowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Konfiguracja XCTestCase, sprzątanie i metody testowe”?

Strukturyzowanie klas testowych za pomocą setUp/tearDown i nazywanie metod testowych. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Swift Academy?

Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Konfiguracja XCTestCase, sprzątanie i metody testowe”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?

Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konfiguracja XCTestCase, sprzątanie i metody testowe
  2. Rodzina XCTAssert i asercje zgłaszające błędy
  3. Mockowanie oparte na protokołach i wstrzykiwanie zależności
  4. Testy asynchroniczne i pomiar wydajności
← Powrót do Swift Academy