XCTest — Testes em Swift (iOS/macOS)

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é XCTest e para que serve?

XCTest é um framework nativo da Apple para testes unitários, funcionais e de desempenho de aplicativos em Swift (iOS, macOS, watchOS, tvOS). Ele é análogo a bibliotecas como pytest para Python ou JUnit para Java, mas totalmente integrado ao Xcode e ao Swift Package Manager. XCTest permite verificar automaticamente a correção de funções individuais, classes, componentes de UI e requisições de rede, o que é essencial para manter a qualidade do código durante o desenvolvimento de aplicativos nativos.

Como instalar o XCTest?

XCTest é fornecido junto com o Xcode e não requer instalação separada. Para começar, basta criar um novo projeto no Xcode e adicionar um target para testes (iOS Unit Testing Bundle ou macOS Unit Testing Bundle). Se você usa o Swift Package Manager, adicione a dependência import XCTest no seu arquivo de teste. Para integração com CI/CD (por exemplo, GitHub Actions), adicione o script: xcodebuild test -scheme YourScheme -destination 'platform=iOS Simulator,name=iPhone 14'.

Principais funcionalidades do XCTest

  • Testes Unitários (Unit Tests) — verificação de métodos e classes individuais usando XCTAssert.
  • Testes de Desempenho — medição do tempo de execução de blocos de código através de measure.
  • Testes de UI — automação da interação com a interface via XCUIApplication.
  • Testes Assíncronos — trabalho com expectativas através de XCTestExpectation.
  • Testes Parametrizados — execução de um mesmo teste com diferentes dados de entrada (através de loops).

Exemplo de código em Swift (iOS)

import XCTest

class CalculatorTests: XCTestCase { var calculator: Calculator!

override func setUp() { super.setUp() calculator = Calculator() }

override func tearDown() { calculator = nil super.tearDown() }

func testAddition() { let result = calculator.add(2, 3) XCTAssertEqual(result, 5, "Esperado 5, obtido \\(result)") }

func testPerformanceExample() { measure { _ = calculator.add(1000, 2000) } }

func testAsyncNetwork() { let expectation = self.expectation(description: "Carregamento de dados") NetworkService.fetchData { data in XCTAssertNotNil(data) expectation.fulfill() } waitForExpectations(timeout: 5) }}

Quando usar XCTest?

XCTest é obrigatório para todos os projetos comerciais iOS/macOS, especialmente se você trabalha em equipe ou planeja publicar na App Store. Ele ajuda a prevenir regressões durante refatorações, acelera revisões de código e automatiza a verificação de UI. Para testar requisições de rede e operações com banco de dados, XCTest é combinado com mocks (por exemplo, OHHTTPStubs). Se você está escrevendo uma biblioteca em Swift, XCTest é o padrão de facto, pois é totalmente suportado pelo Xcode e pelo Swift Package Index.

Recommendations