Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!