Saltar al contenido

Error: no se puede encontrar @SpringBootConfiguration al hacer @WebMvcTest para Spring Controller

Solución:

Entonces aquí está la solución:

La documentación sobre la detección de la configuración de prueba dice:

El algoritmo de búsqueda funciona desde el paquete que contiene la prueba hasta que encuentra una clase anotada @SpringBootApplication o @SpringBootConfiguration. Siempre que haya estructurado su código de una manera sensata, generalmente se encuentra su configuración principal.

Entonces el @SpringBootApplication la clase debe ser más alta en la jerarquía del paquete que la clase de prueba, por ejemplo, si la clase de prueba está en el paquete com.zerosolutions.controller luego @SpringBootApplication la clase debe estar en un paquete superior a com.zerosolutions.controller paquete es decir com.zerosolutions o com.

Problema

Pero en caso de que el @SpringBootApplication la clase está al mismo nivel que la clase de prueba, no podrá encontrarla, es decir com.zerosolutions.general. En este caso, obtendrá el siguiente error:

java.lang.IllegalStateException: no se puede encontrar una @SpringBootConfiguration, debe usar @ContextConfiguration o @SpringBootTest (classes = …) con su prueba

Solución

Si está ejecutando una prueba integrada, puede mencionar explícitamente el @SpringBootApplication clase como esta

@RunWith(SpringRunner.class)
@SpringBootTest(classes={SpringBootApp.class})

Pero si desea realizar pruebas unitarias de un controlador, no es necesario que inicie todo el contexto de Spring. Prefieres reemplazar @SpringBootTest con @WebMvcTest(MasterController.class). Esto instanciará solo la capa web con MasterController y no todo el contexto de Spring.

Problema

Pero el problema es que volverá a encontrarse con el error que enfrentamos anteriormente:

java.lang.IllegalStateException: No se puede encontrar una @SpringBootConfiguration, necesita usar @ContextConfiguration o @SpringBootTest (classes = …) con su prueba

Y @WebMvtTest no tiene una classes atributo como @SpringBootTest para mencionar explícitamente el @SpringBootApplication clase. Entonces, hay dos soluciones para esto.

Solución

Primero: Mueva su clase de aplicación a un paquete superior a la clase de prueba, es decir com.zerosolutions o com paquete.

Segundo: Mencione su @SpringBootApplication clase explícitamente como a continuación

@RunWith(SpringRunner.class)
@WebMvcTest(MasterController.class)
@ContextConfiguration(classes={SpringBootApp.class})

Espero que se aclare la confusión de la configuración de la prueba de primavera. Gracias

Si su clase Application.java (en src / main / java) se encuentra en

com.A.B

Su clase de prueba ApplicationTest.java (en src / test / java) debe estar debajo

com.A.B o com.A.B.C o com.A.B.C.D

Obtendrá este error si la clase de prueba se encuentra en los siguientes paquetes

com.A o com.A.C o com.A.D

En Spring boot LA REGLA GENERAL ES EL NOMBRE DEL PAQUETE DE LA CLASE DE PRUEBA DEBE COMENZAR CON EL NOMBRE DEL PAQUETE DEL PAQUETE DE LA CLASE JAVA QUE SE VA A PROBAR

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *