Testes automatizados são a base de qualquer SDK confiável. Em Swift, XCTest + MockURLProtocol permitem testar networking sem rede real, e CI com GitHub Actions garante que cada PR é validada.

Pirâmide de Testes

NívelQuantidadeVelocidadeEscopoExemplo
UnitMuitosMilissegundosUma função/classeRetryPolicy.delay(forAttempt:)
IntegrationAlgunsSegundosMúltiplos componentesAPIClient + MockURLProtocol
UI/E2EPoucosMinutosFluxo completoXCUITest do fluxo de verificação

Convenções de Nomenclatura

PadrãoFormatoExemplo
Given-When-Thentest_givenX_whenY_thenZtest_givenExpiredToken_whenRefresh_thenReturnsNewToken
Method-State-Expectedtest_method_state_expectedtest_execute_serverError_retriesThreeTimes
ShouldtestMethodShouldBehaviortestCircuitBreakerShouldOpenAfterThreshold
Qual a diferença entre XCTest e o novo Swift Testing framework?
Swift Testing (iOS 16+) usa macros #expect e @Test em vez de XCTAssert e prefixo test. Suporta parameterized tests nativamente, tags para organização, e melhor integração com Swift concurrency. XCTest ainda é necessário para UI tests e apps que suportam iOS < 16.