Swift Academy · Lezione

Configurazione, teardown e metodi di test di XCTestCase

Strutturare le classi di test con setUp/tearDown e denominare i metodi di test.

Lezione 1 di 413 passaggi

Configurazione, teardown e metodi di test di XCTestCase è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Nozioni di base su XCTestCase

XCTestCase è la classe base per tutti i test unitari Swift. Ogni metodo che inizia con "test" è un caso di test.

import XCTest

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

setUp e tearDown

setUp() viene eseguito prima di ogni test. tearDown() viene eseguito dopo ogni test. Li utilizzi per inizializzare e ripulire lo stato condiviso.

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

setUpWithError e tearDownWithError

Sono le varianti di setUp/tearDown che possono generare errori: se la configurazione iniziale genera un errore, il test viene contrassegnato automaticamente come non riuscito.

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

Configurazione a livello di classe

class setUp() e class tearDown() vengono eseguiti una volta prima e dopo tutti i test della classe: sono utili per le risorse condivise costose da inizializzare.

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

Denominazione dei metodi di test

Denomini i test come test_methodName_condition_expectedResult per migliorarne la leggibilità e rendere chiari i messaggi di errore.

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

addTeardownBlock

Registri blocchi di pulizia per singolo test direttamente nel codice, senza sovrascrivere tearDown.

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

Disabilitazione dei test

Anteponi _ al nome di un metodo di test oppure commenti il metodo per saltarlo. XCTest supporta anche la possibilità di saltare un test con XCTSkipIf.

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

I metodi di test non possono generare errori (prima di Xcode 16)

Nelle versioni precedenti di Xcode, i metodi di test dichiarati come throws propagano gli errori come fallimenti del test tramite XCTAssertNoThrow.

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

Fallimento esplicito di un test

Chiami XCTFail("reason") per forzare il fallimento di un test con un messaggio descrittivo.

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

Piani di test

I Test Plans di Xcode consentono di eseguire gli stessi test con configurazioni diverse, come lingua, variabili d'ambiente e sanitizer.

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

Test paralleli

Abiliti i test paralleli nelle impostazioni dello schema di Xcode per eseguire contemporaneamente le classi di test e ridurre il tempo complessivo dei test.

// 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

Verifica rapida

Quale metodo di XCTestCase viene eseguito una volta prima di tutti i test della classe, e non prima di ogni singolo test?

Riepilogo della lezione

Sovrascriva setUp/tearDown o le relative varianti che possono generare errori per la configurazione e la pulizia di ogni test. Utilizzi class setUp/tearDown per le risorse inizializzate una volta per classe. Denomini i test in modo descrittivo. Utilizzi addTeardownBlock per la pulizia inline e XCTSkipIf per saltare i test in modo condizionale.

Gratis per iniziare

Impara Swift con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
122
Lezioni
409

Domande Frequenti

La lezione «Configurazione, teardown e metodi di test di XCTestCase» è gratuita?

Sì — il testo completo di «Configurazione, teardown e metodi di test di XCTestCase» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Configurazione, teardown e metodi di test di XCTestCase»?

Strutturare le classi di test con setUp/tearDown e denominare i metodi di test. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Configurazione, teardown e metodi di test di XCTestCase»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione, teardown e metodi di test di XCTestCase
  2. Famiglia XCTAssert e asserzioni con errori
  3. Mock basati su protocolli e dependency injection
  4. Test asincroni e misurazione delle prestazioni
← Torna a Swift Academy