Pular para conteúdo

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.