Spring Boot 自动装配配置类进入 Junit 测试
Posted
技术标签:
【中文标题】Spring Boot 自动装配配置类进入 Junit 测试【英文标题】:Spring Boot autowire configuration class into Junit Test 【发布时间】:2021-12-23 18:22:09 【问题描述】:我目前在 Spring Boot 中遇到了 Junit 测试的问题。我有一个 @Configuration
类,我想为其测试 @Bean
方法。因为这些方法在测试期间被跳过,所以我将配置方法的内容提取到一个受保护的方法中,然后将在@Configuration
类的@Bean
方法中调用该方法。
我这样做是为了测试这些方法的行为。在这个方法中,不同的@ConfigurationProperties
用于加载一些设置。
现在,在我的 ConfigurationTest
类中,我正在模拟 ConfigurationProperties
类,以便测试 @Bean
方法的正确行为。
我的问题是,当我在 @Bean
方法内(更具体地说是在从 @Bean 方法调用的受保护方法内)时,我的 ConfigurationProperties
类的 Mockito 模拟总是返回 null。感觉我设置@Configuration
类的方式有问题。目前我正在自动装配它。
我现在的问题是,如何正确设置 @Configuration
类,以便调用它的函数并模拟使用的 @ConfigurationProperties
类的返回值?
提前致谢!
【问题讨论】:
你想在这个被测@Configuration 类上运行什么样的断言? 总的来说,没有人像这样测试配置bean。您可以通过测试它一起或单独创建的单个 bean 来间接测试它。您只需在要注入测试的 bean 上使用 @Autowired,这就是您知道 Configuration 是否创建它们的方式 如果你能展示一些代码,会更容易帮助你,也更容易理解。 【参考方案1】:将@EnableConfigurationProperties(value=YourConfigurationProperties.class)
添加到您的测试类。这将加载属性。
【讨论】:
以上是关于Spring Boot 自动装配配置类进入 Junit 测试的主要内容,如果未能解决你的问题,请参考以下文章
spring boot自动装配原理@EnableAutoConfiguration
Spring Boot 自动装配定义与自定义starter原理,及如何实现自定义装配