Começar
Aparência

Vale na hora e fica lembrada neste navegador.

Decisões

ORG-0015 — Testes de unidade e integração

Contexto

A linguagem define as ferramentas de teste, mas o que um teste precisa provar é igual em toda stack: as regras, as partes do sistema contra dependências reais e os contratos da plataforma.

Decisão

  1. Três camadas: unidade (uma regra, sem rede nem container), integração (uma parte real do sistema contra dependências reais, inclusive o teste de rota) e fim a fim (ORG-0016).
  2. Um comando roda unidade e integração, igual na máquina e na CI.
  3. Integração contra dependências reais em container: armazenamentos e o Keycloak na mesma versão do compose.yaml e do toolbox. Nada de servidor OIDC falso para provar o fio.
  4. Os contratos da plataforma têm teste de integração em toda aplicação: identidade (redireciona ao Keycloak; 403 explicativo; logout completo), observabilidade (log JSON com traceId, métricas só na porta interna, /up sem autenticação, coletor fora do ar não derruba requisição) e aviso de ambiente.
  5. Poucos testes com Keycloak real, com espera generosa: o startup dele é limitado por CPU.
  6. Frameworks, bibliotecas e recortes da suíte ficam numa ADR da stack (a ADR-0003 pré-escrita).

Alternativas consideradas

AlternativaPor que não
Mocks para banco e identidadePor que não: provam o mock, não o fio real
Ferramentas de teste fixadas pela arquiteturaPor que não: dependem da linguagem

Consequências

  • A suíte de integração precisa de Docker e é mais lenta que a de unidade; os recortes ficam documentados no guia de testes.

Mais

O detalhe está na documentação da arquitetura.