为什么避免在单元测试中写死IP地址

案情回顾

最近在工作中遇到前人写的这样的单元测试(已脱敏处理)

public class ServiceClientTest {

    @Test
    public void getConfig() throws Exception {
        ServiceClient client = ServiceClient
                .getInstance("http://10.5.98.200:8080/api/");
                ···
                ···
    }
}

"http://10.5.97.200:8080/api/" 这样写有什么问题吗?貌似没问题。

原因分析

但问题在于,现在很多互联网公司使用的是Docker + Kubernetes 搭建的虚拟集群服务器,可以动态按需伸缩容。你的测试环境的服务器会随着项目的迭代更新导致要升级服务器,有些公司不是直接在原来的机器上扩容,而是先缩容,再扩容,(就是先删了虚拟服务器,再重新申请一个虚拟服务器)也就是会换服务器,换IP地址,好了,一换机器,前人写的这个这种写死IP地址的单元测试就过不了了。本着谁的单元测试谁负责的原则,但是现实中经常遇到,写这单元测试的人早离职了,就变成了谁发布谁修改。后来的人还得改前人的单元测试(一边改一边骂娘)。

解决方法

大多数client.getInstance()有默认参数,你不填的话是连接到本机。所以尽量不要写死这个IP地址。尽量做到不要给后人留坑。能默认连接的就不要写死IP。单元测试质量宁愿差点,也别影响别人。

比较合适的写法

public class ServiceClientTest {

    @Test
    public void getConfig() throws Exception {
        ServiceClient client = ServiceClient.getInstance();
                ···
                ···
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。