Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

176
Vistas
Spring boot no puede autoconectar la clase en las pruebas después de deshabilitar JPA

espero que todos estén bien

Estoy enfrentando algunos problemas al probar mi aplicación Spring Boot. Creé una API simple (actualmente tiene solo un método y está funcionando) y creé las pruebas de dominio que deshabilitan las configuraciones de JPA. Cuando pruebo con JPA deshabilitado, las pruebas proporcionan el siguiente error:

 org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.mhrehbein.curriculum.register.infrastructure.mysql.ISpringDataAboutMeRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

Cuando habilito la configuración de JPA, funciona bien, pero me gustaría deshabilitarla una vez que sean pruebas unitarias. Puede consultar el código en el siguiente PR: https://github.com/retatu/curriculum/pull/6/files (lo siento)

En el código, puede ver que todas las pruebas están rotas, las pruebas son básicamente las mismas y el ejemplo está aquí: https://github.com/retatu/curriculum/blob/dev/src/test/java/com/mhrehbein/ currículum/registro/dominio/entidad/AboutMeTest.java

Agradezco cualquier ayuda

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Spring tiene su contexto de aplicación de primavera que funciona como un contenedor de frijoles. BeanFactory representa la inversión de primavera del contenedor de control. Lo que hace es exponer los beans a la aplicación. Cuando su aplicación requiere un bean que no está disponible, lanza NoSuchBeanDefinitionException .

Creo que su pregunta y la causa raíz se responden mejor en la siguiente pregunta. Espero que le sirva de cinco puntos de vista sobre el problema.

¿Qué es una excepción NoSuchBeanDefinitionException y cómo la soluciono?

over 4 years ago · Santiago Trujillo Denunciar

0

En su código, declaró una interfaz que extiende PagingAndSortingRepository :

 public interface ISpringDataAboutMeRepository extends PagingAndSortingRepository<AboutMe, UUID> { }

Significa que Spring Boot debe configurar automáticamente este bean de repositorio, es decir, se configurará como un bean proxy de SimpleJpaRepository .

Pero dado que deshabilitó DataSourceAutoConfiguration en application-test.properties , no se configuró ningún bean DataSource , por lo tanto, JpaRepositoriesAutoConfiguration automático no está activado y los repositorios JPA definidos por el usuario, en su caso ISpringDataAboutMeRepository , no están registrados , lo que conduce a la NoSuchBeanDefinitionException . Más info al respecto aquí .

Además, si deshabilita HibernateJpaAutoConfiguration , el bean EntityManagerFactory no está configurado, lo cual es necesario para crear su bean ISpringDataAboutMeRepository .

Como resultado, si desea ejecutar @SpringBootTest , debe eliminar su propiedad spring.autoconfigure.exclude de application-test.properties y configurar una base de datos para pruebas, por ejemplo, base de datos H2 en memoria:

Agregue a su build.gradle :

 testImplementation group: 'com.h2database', name: 'h2', version: '1.4.200'

Su application-test.properties -prueba.propiedades:

 spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 spring.datasource.username=sa spring.datasource.password=sa

De lo contrario, puede usar la anotación @MockBean en sus clases de prueba para simular su ISpringDataAboutMeRepository modo que:

 @SpringBootTest @ExtendWith(SpringExtension.class) // remove it since @SpringBootTest already contains it @TestPropertySource(locations = "classpath:application-test.properties") @MockBean(ISpringDataAboutMeRepository.class) public class AboutMeTest { ... }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda