Repaso
English
Spring, JPA y Java WebIntermedioSPR-24

¿Qué anotación de test arranca el contexto COMPLETO de Spring, y cuál carga solo la capa web?

Opciones

  1. @WebMvcTest arranca el contexto completo; @SpringBootTest carga la capa web
  2. @SpringBootTest arranca el contexto completo; @WebMvcTest carga la capa web (Opción correcta)
  3. Ambas anotaciones cargan siempre todo el contexto de la aplicación
  4. @DataJpaTest arranca el contexto completo de la aplicación

Respuesta

@SpringBootTest es completo; @WebMvcTest carga solo los controladores y componentes web (con MockMvc)

Por qué

@SpringBootTest arranca toda la aplicación: lento pero realista (tests de integración).

Los test slices cargan solo la parte que estás probando, así que son más rápidos:

  • @WebMvcTest(UserController.class): solo la capa web; haces mock de los servicios y llamas a los endpoints con MockMvc.
  • @DataJpaTest: solo JPA y repositories, con una base de datos en memoria por defecto.

Para unit tests puros de un servicio, sáltate Spring: usa JUnit + Mockito.

Recuerda

Los slices (@WebMvcTest, @DataJpaTest) son rápidos; @SpringBootTest es la app completa.

Términos clave

Practica esta pregunta en Repaso