项目使用了 OpenFeignFeign 在初始化时会试图获取 Spring MVC 的相关配置同时Spring MVC 的自动配置WebMvcAutoConfiguration又在等待 Feign 或其他 Bean初始化完成。这会导致死锁/循环依赖导致 Context 启动失败。前提是需要使用到上下文如注入别的Bean调用服务等测试环境会尝试加载所有自动配置包括 Feign 和 WebMvc而它们在没有完整运行环境如 Nacos 服务发现时容易打架。最终解决办法webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORTSpringBootTest(classesXxxApplication.class,webEnvironmentSpringBootTest.WebEnvironment.RANDOM_PORT)webEnvironment SpringBootTest.WebEnvironment.RANDOM_PORT这是 Spring Boot 测试中的一个关键配置参数它的核心含义是“请启动一个真实的、嵌入式的 Web 服务器如 Tomcat并让它监听一个随机的、未被占用的端口。”从对比和原理两个角度来看特性默认模式 (不写参数)RANDOM_PORT 模式对应枚举WebEnvironment.MOCKWebEnvironment.RANDOM_PORT服务器状态❌ 不启动真实的 Tomcat/Jetty✅ 启动真实的嵌入式服务器网络请求无法通过 HTTP 访问 (只能用 MockMvc)可以通过http://localhost:随机端口真实访问Bean 初始化模拟 Servlet 环境部分 Web Bean 延迟或特殊初始化完整模拟生产环境所有 Web Bean 按真实顺序初始化端口号无端口随机分配 (如 54321, 61092)避免冲突主要用途纯单元测试速度快集成测试更接近真实运行环境涉及循环依赖和Feign Client的问题使用该配置会要求Spring Boot 先启动真实的 Web 服务器。服务器启动过程强制要求所有 Web 相关的底层设施包括 mvcResourceUrlProvider必须立即、完整地初始化。确保所有 Bean 按正确的生产顺序初始化从而避开奇怪的循环依赖 Bug。如果需要在测试代码里知道这个端口是多少可以注入AutowiredprivateLocalServerConfigserverConfig;// 或者使用 Value(${local.server.port})Value(${local.server.port})privateintport;