在浏览了很多大佬的文章以及接受过数次线上事故的洗礼之后,我深刻意识到了将代码放到线上跑之前进行详尽地测试的重要性,之前一直对单元测试没有上心,主要精力都放在了设计和开发上,后来leader跟我说在进行开发工作的时候大部分情况只有百分之40的时间用来开发,而测试调试可能会用百分之六十的时间和精力,然后阅读了一些资料后,学习了一下在做golang开发的时候怎么对自己的代码进行单元测试。
在平时写一些demo的时候测试很简单,只需要写一个main方法调用下写的函数就可以验证功能了。在golang的项目开发中写单元测试其实差不多也是这样,一般来说golang中单元测试代码可以就和代码文件放在一个包下,取名代码“文件名_test.go”。然后对要测试的方法编写测试用例即可。
一些普通的算法代码单元测试可能很简单,就是传个各种参数然后校验一下返回的结果就可以了。比如下面的例子
但是大部分情况我们写的代码可能不只是一个单纯的算法,可能会依赖各种数据源和接口,比如调用http接口或是查数据库,这个时候就不是简单地进行方法调用和传参就可以顺利跑通测试用例的了。比如
这个时候如果http接口还未提供或者说在测试环境没办法进行调用,就不能通过上面那种简单的方法调用的形式进行单元测试了。这个时候就需要用到mock数据,简单来说就是将获取数据源的方法抽象为一个接口,
然后原待测试的方法重构一下
然后就可以在真实环境调用该方法时传入实现中调用真实http接口的ds,在测试时可以直接mock假的接口数据以验证方法的其他逻辑。
有疑问加站长微信联系(非本文作者)