You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot单元测试:如何仅注入配置类而不启动全量应用

解决方案:轻量测试@Configuration配置类

要实现仅加载目标配置类并完成配置注入,无需初始化整个应用上下文,可以通过以下方式修改测试代码:

@ExtendWith(SpringExtension.class)
@ContextConfiguration(classes = SpringNyseFeedConfig.class)
@EnableConfigurationProperties
@ActiveProfiles("test")
public class SpringNyseFeedConfigTest {

    @Autowired
    private SpringNyseFeedConfig config;
    
    @Test
    void propertiesReadAsExpected() {
        assertNotNull(config);
        ServerConnection requestServer = config.getRequestServer();
        assertEquals("192.168.1.200", requestServer.getHost());
        // 其他配置属性断言
    }
}

关键注解说明

  • @ExtendWith(SpringExtension.class):启用Spring测试框架支持,是JUnit 5的标准写法,替代旧版@RunWith(SpringRunner.class)。
  • @ContextConfiguration(classes = SpringNyseFeedConfig.class):明确指定Spring上下文仅加载目标配置类,避免初始化应用中其他无关Bean。如果父类FeedConfig包含必要的配置逻辑(比如自身也是@Configuration类),需要将其也加入classes数组中,例如classes = {SpringNyseFeedConfig.class, FeedConfig.class}。
  • @EnableConfigurationProperties:开启配置属性绑定功能,确保@ConfigurationProperties(prefix = "feed")能正常读取application-test.yml中的配置值。
  • @ActiveProfiles("test"):保留该注解,确保加载测试环境的配置文件。

注意事项

确保application-test.yml文件放置在测试资源目录src/test/resources下,配置路径和前缀与代码中的prefix = "feed"匹配,这样配置才能被正确读取并绑定到SpringNyseFeedConfig实例中。测试运行时,@PostConstruct标注的completeConfig()方法也会正常执行,完成配置的最终设置与校验。

内容的提问来源于stack exchange,提问作者Sam Goldberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 05:52:50