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

为何使用@ActiveProfiles激活测试Profile时取spring.profiles.active返回null

问题原因

  • 你声明的ConfigurableEnvironment是Mockito生成的Mock代理对象,而非Spring测试上下文里的真实实例。@Mock注解生成的Mock对象所有方法默认返回null,完全没有绑定Spring容器的配置信息,自然读取不到spring.profiles.active的值。
  • 代码中@Before方法里执行的MockitoAnnotations.initMocks(this)会再次初始化所有带@Mock注解的字段,彻底切断和Spring上下文的关联,即便你之前用@Autowired注入实例,只要字段加了@Mock也会被覆盖为空Mock对象。
  • 额外提醒:你提供的代码存在拼写笔误,@Mock声明的变量名为enviroment(少了字母n),测试方法里调用的是environment.getProperty,如果是实际运行的代码会直接触发编译错误。

解决方案

如果你需要读取到真实的激活profile值,直接将@Mock替换为@Autowired注入Spring容器自带的ConfigurableEnvironment即可:

// 替换@Mock为@Autowired
@Autowired
private ConfigurableEnvironment environment;

修改后调用environment.getProperty("spring.profiles.active")就能正确返回test。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:54:04