📊 Capítulo 16: Testes Automatizados no Spring Boot
Especialização Backend com Java 21 & Spring Boot 3
🗺️ A Pirâmide de Testes no Spring Boot
flowchart TD
UNIT["1. Testes Unitários Puros (JUnit 5 + Mockito)\n- Rápidos (milissegundos), sem subir o Spring Context"]
--> SLICE["2. Testes de Slice (@WebMvcTest / @DataJpaTest)\n- Carregam apenas a camada relevante (Controllers ou Repositories)"]
--> INTEG["3. Testes de Integração Completos (@SpringBootTest + Testcontainers)\n- Sobem o banco PostgreSQL e Redis reais em Docker efêmero"]
style UNIT fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style SLICE fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style INTEG fill:#ede7f6,stroke:#512da8,stroke-width:2px
🎯 Slide 1: Testes de Controller com @WebMvcTest & MockMvc
@WebMvcTest(UsuarioController.class)
class UsuarioControllerTest {
@Autowired private MockMvc mockMvc;
@MockBean private UsuarioService service;
@Test
void deveRetornar201AoCriarUsuarioValido() throws Exception {
when(service.salvar(any())).thenReturn(new UsuarioResponseDTO(1L, "Ana", "ana@email.com"));
mockMvc.perform(post("/api/v1/usuarios")
.contentType(MediaType.APPLICATION_JSON)
.content("""
{"nome": "Ana", "email": "ana@email.com"}
"""))
.andExpect(status().isCreated())
.andExpect(jsonPath("$.id").value(1))
.andExpect(jsonPath("$.nome").value("Ana"));
}
}
🎯 Slide 2: Testes de Persistência com @DataJpaTest
-
Ambiente Focado em Dados: Carrega apenas o Hibernate, EntityManager e Repositórios.
-
Rollback Automático: Cada método de teste é transacional por padrão e sofre rollback ao final, mantendo o banco sempre limpo.
- Flyway Integrado: Valida se todas as migrações SQL rodam sem erro de sintaxe.
🎯 Slide 3: Ambientes Reais com Testcontainers
-
Chega de H2 em Memória: O banco em memória H2 difere em sintaxe e funções de bancos reais (Postgres/MySQL/Oracle).
-
Testcontainers: Inicia contêineres Docker reais de PostgreSQL, Redis e Kafka durante os testes e os destroi ao final.
- Fidelidade de Produção: Garante que o software testado localmente se comporte identicamente ao ambiente de nuvem!
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim