springboot微服务测试类启动时报 java.lang.IllegalArgumentException: createCheck port must be greater than0

背景

最近禅道bug比较多,自从参加工作以来,很少有写测试类的习惯,为了减少bug率,决定每次开发完之后都先严格自测一遍。

问题

当前项目采用spring cloud 做微服务开发,所以写测试类必须启动上下文,在启动测试类时出现了如图所示的问题。
在这里插入图片描述
正常启动应用没问题,但是一启动测试类就会出现这个问题,百度发现没有人出现过相关情况,于是决定debug运行过程,看看到底是哪里出了问题。

先看报异常的地方
报异常的地方
可以看到是因为port不满足大于0的条件,才报的这个异常,那么port的值是什么时候设置的呢,代码往回走
在这里插入图片描述
发现port的值为-1,确实是不满足条件的,根据源代码的参数名和和类名来看,这个port应该是从properties配置中读取出来的。而配置文件中是配置了这个参数的

在这里插入图片描述

在这里插入图片描述
查看properties变量,发现里面确实有很多配置,发现port的值竟然是-1,很有可能是没有读取到properties文件中的配置。但是发现oscarbossuser这个变量又是读取到了,怀疑很有可能是${}这个表达式导致没有读取到这个变量。于是将serviceName随便改个名字,再debug,发现配置的值生效了。于是将port手动配置为8082,再启动测试类,果然测试通过,port的值能正确读取到了,问题便解决了。

总结

这个问题的发生的原因还是配置没有被正确读取到,无法在网上获取足够的经验前,自己亲自到代码中去查找原因才是最靠谱的,而且解决这种问题要善于使用控制变量法和大胆猜测,先提出怀疑,再改变部分因素查证,问题的原因便能很快定位到。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值