Prueba de integración de Spring Boot simulando dependencia externa
Estoy intentando crear pruebas de integración para mi aplicación Spring Boot. La idea es lanzar una base de datos de PostgreSQL incrustada y ejecutar llamadas HTTP con TestRestTemplate a mis controladores.
El problema es que mi proyecto tiene una dependencia que usamos para las colas de Redis.
<dependency>
<groupid>com.github.sonus21</groupid>
<artifactid>rqueue-spring-boot-starter</artifactid>
<version>2.9.0-RELEASE</version>
</dependency>
He intentado simular las dependencias y la mayoría funcionan, pero con esta parece que se queja supongo que porque es una @Configuration
y no un @Component
:
Clase de configuración de la dependencia:
@Configuration
@AutoConfigureAfter({RedisAutoConfiguration.class})
@ComponentScan({"com.github.sonus21.rqueue.web", "com.github.sonus21.rqueue.dao"})
public class RqueueListenerAutoConfig extends RqueueListenerBaseConfig {
public RqueueListenerAutoConfig() {
}
...
}
Mi clase de configuración de prueba:
@TestConfiguration
public class TestRestTemplateConfig {
@Bean
@Primary
@Order(Ordered.HIGHEST_PRECEDENCE)
public RqueueListenerAutoConfig rqueueListenerAutoConfig() {
return Mockito.mock(RqueueListenerAutoConfig.class);
}
....
}
He intentado con @AutoConfigureOrder(1)
en mi clase de configuración, pero la clase original RqueueListenerAutoConfig
se lanza antes de todo y mis beans simulados aún no han sido declarados.
Para ser honesto, simular cada servicio de esa dependencia es un dolor, pero no he encontrado una forma de simular toda la dependencia con una sola configuración. He intentado no cargar la dependencia cuando estoy en el perfil de prueba, pero como se ejecuta el contexto de Spring, mi código la necesita.
Mi clase de prueba tiene la siguiente configuración:
@SpringBootTest
@Import(TestRestTemplateConfig.class)
@ActiveProfiles("test")
public class TestClass {
...
}
¿Alguna pista?
Gracias.
davy.ai
Solución para crear pruebas de integración para una aplicación Spring Boot con una base de datos Postgres embebida y una dependencia de cola Redis
Al intentar crear pruebas de integración para una aplicación Spring Boot que incluye una dependencia de cola Redis, es posible que encuentre errores debido a la configuración de la dependencia. Específicamente, la dependencia puede tener
@Configuration
en lugar de@Component
, lo cual puede causar fallas en las pruebas. Aquí hay una posible solución a este problema:Primero, cree una clase de configuración de prueba que extienda la
RedisAutoConfiguration
original.Luego, actualice su clase
TestRestTemplateConfig
para importar esta claseTestRedisAutoConfiguration
.Finalmente, actualice la clase de prueba para incluir la configuración de la dependencia de cola Redis. Puede hacer esto agregando la anotación
@Import
a la propia clase de prueba.Con estos cambios, deberías poder ejecutar pruebas de integración en tu aplicación Spring Boot con una dependencia de cola Redis. ¡Buena suerte!</string,></string,>