Определение функциональных компонентов Kotlin DSL — добавить инициализатор в один тестовый класс?

#spring #spring-boot #spring-webflux #spring-boot-test #spring-bean-dsl

#весна #пружинный ботинок #пружинный вебфлюкс #тест на пружинную загрузку #спринг-бобы-dsl

Вопрос:

У меня есть тест весенней загрузки, в котором используется Redis, и я хотел бы загрузить только компоненты, связанные с Redis, для этого теста.

У меня есть функция, которая определяет бобы:

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

И я хотел бы, чтобы в один тестовый класс были добавлены только эти компоненты.

Есть ли способ сделать это без добавления инициализатора компонента в свойства приложения в папке тестовых ресурсов?

Ответ №1:

Оказывается, я могу провести обычный тест Junit (не a @SpringBootTest ) и создать контекст с помощью инициализаторов, таких как:

 SpringApplicationBuilder()  .bannerMode(Mode.OFF)  .initializers(MyCustomInitializer())  .sources(DummyConfig::class.java)  .properties(  mapOf(  "spring.autoconfigure.exclude" to "..."  )  )  .web(WebApplicationType.NONE)  .build()  .run()  .getBean(MyBeanThatIWantToTest::class.java) // ...   @EnableAutoConfiguration  @Configuration  class DummyConfig