Testes de integração Spring
Fatias de contexto, camada de acesso a dados, controladores HTTP e cache.
Testes de integração com Spring Boot
Uma suíte de testes Spring passa de quarenta segundos para onze minutos sem que uma única linha de lógica de negócio tenha sido adicionada. A causa é quase sempre a mesma: o contexto da aplicação é reconstruído dezenas de vezes. O Spring mantém o contexto em cache e o reutiliza entre as classes de teste, mas somente se a configuração solicitada for estritamente idêntica. Uma classe que adiciona um @MockBean, uma propriedade @TestPropertySource ou um perfil diferente obtém uma chave de cache diferente, ou seja, um contexto novo, ou seja, de três a oito segundos adicionais de inicialização. Vinte variantes de configuração significam vinte inicializações.
A segunda armadilha é simétrica: anotar todas as classes de teste com @SpringBootTest por comodidade. Você passa a carregar o contêiner completo — segurança, agendador, clientes HTTP, listeners de mensagens — para testar uma consulta SQL de quinze linhas. O teste fica lento e falha por motivos que nada têm a ver com o que ele verifica: um bean de infraestrutura ausente no ambiente de teste basta para derrubar uma classe que nem sequer o utiliza. A competência a adquirir aqui é carregar o mínimo possível sem perder o realismo, e limitar o número de configurações distintas no projeto.
Comentários
Os comentários são alimentados pelo GitHub Discussions
Conecte-se com o GitHub para participar da discussão