Testes unitários são fundamentais para garantir que cada parte do seu código funcione corretamente. No macOS, o Xcode oferece suporte nativo a testes unitários com os frameworks XCTest e Swift Testing, permitindo validar funções, classes e comportamentos com rapidez e precisão.
🛠️ Passo 1 – Criar um Projeto com Suporte a Testes
- Abra o Xcode e clique em Create a new Xcode project.
- Escolha um template como App (macOS).
- Dê um nome ao projeto e marque a opção Include Unit Tests.
- O Xcode criará automaticamente uma pasta chamada
Testscom um arquivo de exemplo.
🧪 Passo 2 – Escrever um Teste Unitário
No arquivo de teste gerado (ex: MyAppTests.swift), você pode criar métodos de teste usando o framework XCTest:
import XCTest
@testable import MyApp
final class MyAppTests: XCTestCase {
func testSomaSimples() {
let resultado = soma(2, 3)
XCTAssertEqual(resultado, 5, "A soma deveria ser 5")
}
}
- Use
XCTAssertEqual,XCTAssertTrue,XCTAssertNil, entre outros, para validar os resultados esperados. - O atributo
@testablepermite acessar métodos e propriedades internas do seu app.
▶️ Passo 3 – Executar os Testes
- No Xcode, vá até o menu Product > Test ou pressione
Cmd + U. - Os testes serão executados e os resultados aparecerão no painel de navegação.
- Você verá quais testes passaram, falharam ou foram ignorados.
🧪 Alternativa: Swift Testing (Xcode 16+)
O Swift Testing é um framework moderno que reduz a verbosidade e melhora a legibilidade dos testes:
import Testing
@testable import MyApp
#Test("Soma simples") {
let resultado = soma(2, 3)
#Expect(resultado == 5)
}
- Mais conciso e direto.
- Ideal para projetos novos com Swift puro.
💡 Dicas Extras
- Use Test Plans para agrupar diferentes conjuntos de testes.
- Combine testes unitários com UI Tests para validar a interface.
- Configure CI/CD com Xcode Cloud ou GitHub Actions para rodar testes automaticamente.
✅ Conclusão
Criar e executar testes unitários no macOS com Xcode é simples e essencial para manter a qualidade do seu código. Seja com XCTest ou Swift Testing, você garante que cada função se comporte como esperado e evita bugs em produção.
