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

Java Spring中如何用@ContextConfiguration替代@SpringBootTest并保留随机端口配置

实现方案

@ContextConfiguration 原生不支持webEnvironment参数,要实现和@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)等同的效果,可搭配Spring Test原生注解组合实现,无需引入@SpringBootTest即可避免上下文冲突,最终代码写法如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "my.xml", initializers = MyTest.MockJee.class)
@WebAppConfiguration // 启用Web应用上下文能力
@TestPropertySource(properties = "server.port=0") // 配置为0即代表随机分配可用端口启动服务
public class MyTest {
    // 如需获取实际启动的端口,可直接注入
    @LocalServerPort
    private int runningPort;
    ...
}

各配置项作用说明:

  • @WebAppConfiguration:会触发测试框架加载WebApplicationContext,提供Web环境基础能力,替代@SpringBootTest的web环境初始化逻辑
  • @TestPropertySource(properties = "server.port=0"):Spring体系中server.port配置为0时,会自动扫描当前可用的随机端口启动内嵌容器,和RANDOM_PORT的端口分配效果完全一致
  • 如果使用的Spring Boot版本较低不支持@LocalServerPort,可以替换为@Value("${local.server.port}")获取实际启动端口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:15:04