es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Definición funcional de bean Kotlin DSL – ¿agregar inicializador a una sola clase de prueba?

Tengo una prueba de Spring Boot que está usando Redis y me gustaría cargar sólo los beans relacionados con Redis para esa prueba.

Tengo una función que define los beans:

kotlin
fun BeanDefinitionDsl.redisBeans() {
    bean {
        // ...
    }
}

Y me gustaría tener sólo esos beans añadidos a la clase de prueba individual.

¿Hay alguna manera de hacerlo sin añadir el inicializador del bean a las propiedades de la aplicación en la carpeta de recursos de prueba?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de cargar solo los beans relacionados con Redis para la prueba de Spring Boot sin agregar el inicializador de bean a las propiedades de aplicación en la carpeta de recursos de prueba. Puedes lograr esto creando una clase de configuración específica para pruebas que importe los beans relacionados con Redis necesarios de la clase de configuración principal.

    Por ejemplo, si la clase de configuración principal se llama MainConfig, puedes crear una clase de configuración específica para pruebas llamada TestConfig que importe la función redisBeans() de MainConfig:

    @Configuration
    @Import(MainConfig::class)
    class TestConfig {
        @Bean
        fun redisBeans() = MainConfig().redisBeans()
    }
    

    Luego, en la clase de prueba, puedes usar la anotación @ContextConfiguration para especificar TestConfig como la clase de configuración para la prueba:

    @SpringBootTest
    @ContextConfiguration(classes = [TestConfig::class])
    class RedisTest {
        // ...
    }
    

    Al hacer esto, solo se cargarán los beans relacionados con Redis definidos en redisBeans() para la prueba.

Comments are closed.