Micronaut Gradle测试启动失败:所有端口均被占用
问题分析与解决方案
结论:确实是主应用运行导致的端口冲突问题
你的测试抛出BindException,且停止主应用后测试恢复正常,说明主应用的运行占用了测试过程中Micronaut尝试绑定的端口,或者你的测试配置未正确生效,导致测试没有使用随机端口。
可能的原因及解决办法:
测试配置文件未被正确加载
确保application-test.yml放在src/test/resources目录下,测试环境默认只会加载该目录下的配置文件,而非主代码的src/main/resources。如果路径不对,配置中的micronaut.server.port: -1不会生效。强制在测试注解中指定随机端口
可以直接在@MicronautTest注解中显式设置端口属性,绕过配置文件可能的加载问题:@MicronautTest(property = "micronaut.server.port=-1") public class YourTestClass { // 测试代码 }检查主应用端口占用范围
在EC2上执行netstat -tulpn | grep java,查看主应用实际占用的端口列表,确认测试报错的端口(比如4464)是否被主应用占用。如果是,说明主应用可能意外占用了临时端口范围,需要调整主应用的端口配置。测试无需HTTP服务器时禁用它
如果你的测试不需要启动完整的HTTP服务器,可以在application-test.yml中禁用服务器,彻底避免端口绑定问题:micronaut: server: enabled: false
内容的提问来源于stack exchange,提问作者suvodipMondal
相关产品推荐
相关产品推荐

