ADR-0008: Testes de banco contra PostgreSQL real

Decisão: todo teste que toca banco roda contra PostgreSQL real em contêiner, criado pelo Testcontainers (biblioteca que sobe contêineres Docker durante o teste), na versão fixada no código de teste, porque só o banco real mostra o comportamento que a produção teria.

Contexto

Migrações, restrições e consultas usam recursos do PostgreSQL. O CI do GitHub já tem Docker disponível.

Alternativas descartadas

  • H2 em memória: banco Java que imita outros bancos. Descartado porque diverge do PostgreSQL em tipos, funções e restrições, e o teste passa onde a produção falharia.
  • Mock do repositório: substitui o acesso a banco por um objeto falso. Descartado para testes de persistência porque não verifica SQL, migração nem restrição.

Consequências

  • Ganhos: o teste verifica migração, SQL e restrições de verdade.
  • Custos: precisa de Docker para rodar os testes; a suíte fica alguns segundos mais lenta.
  • Passa a ser obrigatório: fixar a versão da imagem do PostgreSQL (nunca latest) e não usar banco em memória.

This site uses Just the Docs, a documentation theme for Jekyll.