功能 bean 定义 Kotlin DSL - 将初始化程序添加到单个测试类?

Posted

技术标签:

【中文标题】功能 bean 定义 Kotlin DSL - 将初始化程序添加到单个测试类?【英文标题】:Functional bean definition Kotlin DSL - add initializer to single test class? 【发布时间】:2022-01-06 08:30:40 【问题描述】:

我有一个使用 Redis 的 Spring Boot 测试,我想只加载与 Redis 相关的 用于该测试的 bean。

我有一个定义 bean 的函数:

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

我只想将那些 bean 添加到单个测试类中。

有没有办法在不向测试资源文件夹中的应用程序属性添加 bean 初始化程序的情况下这样做?

【问题讨论】:

【参考方案1】:

事实证明我可以进行正常的Junit测试(不是@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

【讨论】:

以上是关于功能 bean 定义 Kotlin DSL - 将初始化程序添加到单个测试类?的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin DSL 学习

Kotlin DSL 学习

Gradle Kotlin DSL:在独特的地方定义 Kotlin 版本

使用 Kotlin DSL

Kotlin > Spring Boot > 使用路由器 DSL,POST 方法主体,无法将 JSON 转换为 POJO

Spring Webflux: Kotlin DSL [片断]