0Pricing
Swift Academy · Aula

Configuração, desmontagem e métodos de teste do XCTestCase

Estruture classes de teste com setUp/tearDown e dê nomes aos métodos de teste.

Configuração, desmontagem e métodos de teste do XCTestCase é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

Noções básicas de XCTestCase

XCTestCase é a classe-base de todos os testes unitários do Swift. Cada método que começa com "test" é um caso de teste.

import XCTest

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

setUp e tearDown

setUp() é executado antes de cada teste. tearDown() é executado depois de cada teste. Use-os para inicializar o estado compartilhado e realizar a limpeza.

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

setUpWithError e tearDownWithError

Variantes que lançam erros de setUp/tearDown: se a configuração lançar um erro, o teste será marcado automaticamente como falho.

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

Configuração no nível da classe

class setUp() e class tearDown() são executados uma vez antes/depois de todos os testes da classe — úteis para recursos compartilhados dispendiosos.

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

Nomeando métodos de teste

Nomeie os testes como test_methodName_condition_expectedResult para obter legibilidade e mensagens de falha claras.

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

addTeardownBlock

Registre blocos de limpeza específicos de cada teste diretamente no código, sem substituir tearDown.

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

Desativando testes

Prefixe um método de teste com _ ou transforme-o em comentário para ignorá-lo. O XCTest também permite ignorá-lo condicionalmente com XCTSkipIf.

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

Métodos de teste não podem lançar erros (antes do Xcode 16)

Nas versões anteriores do Xcode, os métodos de teste declarados com throws propagavam erros como falhas de teste por meio de XCTAssertNoThrow.

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

Fazendo um teste falhar explicitamente

Chame XCTFail("reason") para forçar a falha de um teste com uma mensagem descritiva.

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

Planos de teste

Os planos de teste do Xcode permitem executar os mesmos testes com configurações diferentes (idioma, variáveis de ambiente e ferramentas de sanitização).

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

Testes paralelos

Ative os testes paralelos nas configurações do esquema do Xcode para executar classes de teste simultaneamente e reduzir o tempo total dos testes.

// 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ção rápida

Qual método de XCTestCase é executado uma vez antes de todos os testes da classe, e não antes de cada teste individual?

Recapitulação da lição

Substitua setUp/tearDown (ou suas variantes que lançam erros) para configurar e limpar cada teste. Use class setUp/tearDown para recursos inicializados uma vez por classe. Dê nomes descritivos aos testes. Use addTeardownBlock para limpeza diretamente no código e XCTSkipIf para ignorar testes condicionalmente.

Perguntas Frequentes

A aula “Configuração, desmontagem e métodos de teste do XCTestCase” é grátis?

Sim — o texto completo de “Configuração, desmontagem e métodos de teste do XCTestCase” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “Configuração, desmontagem e métodos de teste do XCTestCase”?

Estruture classes de teste com setUp/tearDown e dê nomes aos métodos de teste. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Configuração, desmontagem e métodos de teste do XCTestCase”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Configuração, desmontagem e métodos de teste do XCTestCase
  2. Família XCTAssert e asserções que lançam erros
  3. Mocking baseado em protocolos e injeção de dependências
  4. Testes assíncronos e medição de desempenho
← Voltar para Swift Academy