Testes de Aplicações Spring Boot¶
Escolha o menor escopo capaz de refutar a afirmação relevante.
| Escopo | Pergunta |
|---|---|
| Teste unitário simples | Este objeto implementa seu contrato? |
| Slice MVC | Roteamento, serialização, validação e advice estão corretos? |
| Slice de persistência | Mapeamentos e consultas obedecem ao contrato do banco? |
| Contexto completo | A configuração da aplicação colabora corretamente? |
| Ponta a ponta | O sistema em execução satisfaz o cenário externo? |
Comece pelo teste unitário¶
Serviços de aplicação e domínio com dependências por construtor podem ser testados sem Spring. Isso mantém testes rápidos e dependências explícitas.
Slices e contexto completo¶
Spring Boot oferece slices focados e @SpringBootTest. Um slice inicia contexto
restrito para testar um limite de integração; não é automaticamente unitário.
Não carregue o contexto completo para chamar método puro.
Dependências reais¶
Banco em memória pode diferir de produção em SQL, tipos, locks, restrições e planos. Testcontainers executa serviço real compatível para integrações valiosas. Mantenha migrações no caminho de teste para validar o mesmo mecanismo de evolução.
O guia de técnicas de teste compara substitutos, contratos, propriedades, não determinismo e mutation testing.
Testes transacionais¶
Rollback automático é conveniente, mas pode ocultar flush, commit, locks e comportamento de carregamento lazy. Force flush quando a asserção envolver restrições do banco e inclua testes que atravessem commit para o comportamento transacional.
Testes de API¶
Verifique status, headers, content type, esquema e contrato de erro. Testes de segurança devem cobrir não autenticado, autenticado sem permissão e permitido.
Consulte testes no Spring Boot e integração Testcontainers.