Anotação @WebMvcTest


A anotação @WebMvcTest é usada para testes unitários da camada web. Ela foca apenas na camada de controle, carregando apenas os componentes necessários para testar os controllers.

Características

  • Contexto parcial: Carrega apenas os beans relacionados aos controladores (controllers) e não inicializa o contexto completo da aplicação.
  • Testes focados: Ideal para testar a lógica dos controladores e verificar se eles respondem corretamente a diferentes tipos de solicitações.
  • Dependências: Outras dependências, como serviços e repositórios, devem ser mockadas se necessário.

Exemplo

@WebMvcTest(controllers = ChapterResource.class)
public class ChapterResourceTest {
    @Autowired
    private MockMvc mockMvc;
 
    @MockBean
    private ChapterService chapterService;
 
    @Test
    public void shouldReturnChapter() throws Exception {
        when(chapterService.getChapter(anyLong())).thenReturn(new Chapter());
 
        mockMvc.perform(get("/api/chapter/1"))
            .andExpect(status().isOk());
    }
}

Referências