Skip to content

通过代码设计原则和设计理念,结合自己编写UT的痛点,指导如何写出可测试性好的go风格代码,并且有 good/bad 源码示例和文档解读。

Notifications You must be signed in to change notification settings

opsoer/golang-testability-code-guide

Repository files navigation

golang-testability-code-guide

本项目灵感来自于最近我在编写公司代码(go)单元测试代码时。编写单元测试时候非常痛苦,原因主要就是代码可测试性太差了。项目又是一个分布式的项目,每个服务对外界的依赖又特别多,并且依赖直接写进一个本地函数写死了。我也尝试去直接编写单元测试,对于外部依赖的B服务的RPC调用,我直接在测试文件里创建一个B服务。这样确实也可行,但是我越写越不对劲,越来越感觉不符合go的编码规范,还超级麻烦;而且由于项目性质,好在A服务和被调用的B服务的IP是一个网段,如果不是一个网段,那就麻烦了,在测试文件创建一个B服务都不行了。

那怎么办,我就直接找到导师还有组长说,可以对部分代码进行可测试性改造,并且不需要改变代码的任何逻辑,甚至源函数的调用方式都可以必变,对整个项目来说完全无感。现在,我开始对代码质量有了进一步的追求,代码的可测试性就是其中很重要的一点。这突然就让我想到了技术债这个词,你现在不注重代码质量,等出问题了或者领导开始要求单测覆盖率了,你就不得不去还债了。

经过这段时间的沉淀,我准备把我遇到的一些坑、痛点总结为一个小项目,并且开源出去。里面包含了好的Demo和坏的Demo代码,并且附带上文档。当然,这只是一个入门的项目。也欢迎各位开发者朋友到 Discussions 讨论区分享自己的一些想法和类似经验。如果你也有类似的困惑,也可以加Q群:717129609,一起交流。

About

通过代码设计原则和设计理念,结合自己编写UT的痛点,指导如何写出可测试性好的go风格代码,并且有 good/bad 源码示例和文档解读。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages