Ao desenvolver para iOS, você acaba adiando aquele código de teste que precisa escrever. E, quando abre o XCTest, não sabe por onde começar.
Vou direto ao ponto: seu primeiro teste pode começar com três linhas, Given-When-Then. Preparar, executar e verificar. Depois que essa ordem vira hábito, o resto flui.
Hoje vamos revisar o básico do XCTest e escrever juntos seu primeiro teste usando esse padrão.
Afinal, o que é XCTest?
XCTest é o framework de testes que a Apple inclui por padrão no Xcode. Não é preciso instalar nada.
Ao criar o projeto, marque “Include Tests” e o target de testes será criado automaticamente.
Vamos ao essencial.
- XCTestCase: a classe que contém os testes. Começamos herdando dela.
- Métodos que começam com test: se o nome da função começa com test, o Xcode a reconhece automaticamente como teste.
- Família XCTAssert: funções que verificam se os resultados estão corretos.
No começo, conhecer só essas três coisas já é suficiente.
Executar é simples. Clique no botão em forma de diamante à esquerda do método de teste ou use Command + U para rodar todos os testes.
O que é Given-When-Then?
O ponto que mais confunde quem está começando com testes é decidir em que ordem escrever o código.
Given-When-Then é o padrão que define exatamente essa ordem. Basta pensar em três blocos.
- Given (preparação): crie os valores e o estado necessários para o teste.
- When (execução): execute uma única vez a ação que você quer verificar.
- Then (verificação): confira se o resultado é igual ao esperado.
Em linguagem cotidiana: “Quando houver 2 maçãs no carrinho (Given), ao calcular o valor da compra (When), o resultado deve ser 2000 wones (Then).”
Preparar, executar e verificar. Isso é tudo o que existe no Given-When-Then.
Ao separar assim, quando um teste falhar você identifica imediatamente a etapa problemática: se a preparação estava errada ou se o resultado da execução falhou.
Vamos escrever de verdade nosso primeiro teste
Vamos usar uma calculadora simples como exemplo. Suponha que exista uma função add que soma dois números.
Este é o código que vamos testar primeiro.
struct Calculator {
func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
Agora escreveremos o teste na ordem Given-When-Then. Marcar as três etapas com comentários torna a leitura muito mais fácil.
func testAddTwoNumbers() {
// Given: Preparar a calculadora e os valores de entrada
let calculator = Calculator()
// When: Executar a soma
let result = calculator.add(2, 3)
// Then: Verificar o resultado
XCTAssertEqual(result, 5)
}
XCTAssertEqual compara se dois valores são iguais. Se result não for 5, o teste falha em vermelho; se for 5, passa em verde.
Ainda me lembro da sensação quando a primeira luz verde acendeu. Não foi nada grandioso, mas deu uma satisfação enorme.
Resumo dos XCTAssert mais usados
Saber apenas o XCTAssertEqual já permite começar, mas escolher a asserção certa para cada situação deixa o código muito mais limpo. Organizei em uma tabela as que mais uso.
| Função | Quando usar |
|---|---|
| XCTAssertEqual(a, b) | Se dois valores são iguais |
| XCTAssertTrue(condição) | Se a condição é verdadeira |
| XCTAssertFalse(condição) | Se a condição é falsa |
| XCTAssertNil(valor) | Se o valor é nil |
| XCTAssertNotNil(valor) | Se o valor não é nil |
Se quiser deixar uma mensagem quando falhar, passe uma string como último argumento. Por exemplo: XCTAssertEqual(result, 5, “O resultado da soma está incorreto”).
Dúvidas frequentes de quem está começando
P. Onde devo colocar os arquivos de teste? R. Coloque-os na pasta Tests do projeto. Para serem executados, eles precisam estar incluídos no target de testes.
P. O When precisa ter uma única linha? R. Não precisa. Ainda assim, é melhor executar uma única ação por teste. Quando cada teste verifica apenas uma coisa, a causa da falha fica clara.
P. Como devo nomear as funções de teste? R. Comece o nome com test e deixe claro o que está sendo verificado, como em testAddTwoNumbers.
Hoje escrevemos nosso primeiro teste usando o básico do XCTest e o padrão Given-When-Then. Preparar, executar e verificar: lembre-se desses três passos.
Não se preocupe em criar o teste perfeito. Comece hoje acendendo a luz verde com uma única função add. Esse pequeno sucesso vai levar você ao próximo teste. Torço por você!

