Por que testar não é apenas um "checkmark", mas seu salva-vidas
\n\nImagine: você escreveu um aplicativo incrível em Swift, tudo funciona, seus amigos estão encantados. Mas passa uma semana, você adiciona um novo recurso — e pronto! Tudo quebra. Familiar? Se não — ou você é um gênio, ou ainda não enfrentou o desenvolvimento real. Testar código não é uma obrigação chata, mas uma ferramenta que economiza horas de nervos e faz de você um desenvolvedor confiante.
\n\nNeste artigo, vamos explorar por onde começar os testes em Swift se você é iniciante. Você aprenderá o que é XCTest, como escrever testes unitários e testes de UI, e obterá exemplos de código prontos. Vamos lá!
\n\nO que são testes em Swift e por que são necessários
\n\nTestar é o processo de verificar se seu código faz exatamente o que você espera. No mundo Swift, o principal framework para isso é o XCTest. Ele está integrado ao Xcode e permite escrever testes de qualquer nível: desde verificar uma única função até simular cliques de botões pelo usuário.
\n\nAqui estão três razões principais para dominar os testes em Swift agora mesmo:
\n- \n
- Confiança no código. Você para de ter medo de mudar ou refatorar algo — os testes te protegem. \n
- Economia de tempo. Melhor gastar 10 minutos em um teste do que 2 horas procurando um bug em produção. \n
- Documentação. Testes são documentação viva do seu código. Um novo desenvolvedor (ou você daqui a um mês) entenderá a lógica sem palavras extras. \n
Para iniciantes, testar iOS pode parecer complexo, mas na verdade o primeiro passo é feito em 5 minutos.
\n\nConfiguração do ambiente: primeiro teste em 5 minutos
\n\nAbra o Xcode e crie um novo projeto (File → New → Project → App). Certifique-se de que a opção Include Tests esteja ativa. O Xcode criará automaticamente dois alvos:
\n- \n
YourAppTests— para testes unitários. \n YourAppUITests— para testes de UI. \n
Se o projeto já existir, adicione o alvo de teste manualmente: File → New → Target → iOS Unit Testing Bundle.
\n\nAgora clique no arquivo YourAppTests.swift. Você verá um esboço de classe herdada de XCTestCase. Apague tudo e escreva seu primeiro teste:
import XCTest\n@testable import YourApp\n\nfinal class FirstTests: XCTestCase {\n\n func testExample() {\n let result = 2 + 2\n XCTAssertEqual(result, 4, "A matemática falhou!")\n }\n}\n\n\nClique no losango à esquerda da linha com func testExample e selecione Test. Se aparecer um checkmark verde — você acabou de escrever seu primeiro teste unitário em Swift! Parabéns.
Observe o @testable import YourApp. Esta é a linha chave: ela abre acesso às classes internas do seu aplicativo para que os testes possam vê-las.
Testes unitários: verificando a lógica do aplicativo
\n\nTestes unitários são a base. Eles verificam funções, métodos ou classes individuais. Vamos escrever um teste para uma calculadora simples.
\n\nCriando o código para testar
\n\nAdicione um novo arquivo Swift ao alvo principal (não aos testes!) com a classe:
\n\nimport Foundation\n\nstruct Calculator {\n func add(_ a: Int, _ b: Int) -> Int {\n return a + b\n }\n \n func divide(_ a: Int, _ b: Int) throws -> Int {\n guard b != 0 else {\n throw CalculationError.divisionByZero\n }\n return a / b\n }\n}\n\nenum CalculationError: Error {\n case divisionByZero\n}\n\n\nEscrevendo os testes
\n\nNo arquivo de testes (lembre-se, ele está no grupo YourAppTests) escrevemos:
import XCTest\n@testable import YourApp\n\nfinal class CalculatorTests: XCTestCase {\n\n var calculator: Calculator!\n\n override func setUpWithError() throws {\n calculator = Calculator()\n }\n\n override func tearDownWithError()