Go 语言工程实践之测试| 青训营笔记

161 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天


Go 语言工程实践之测试| 青训营笔记

单元测试

单元测试主要包括,输入,测试单元,输出,以及最终与期望输出的一个校对。

这里的单元概念可能会稍微宽泛一些,包含接口,函数模块或者是聚合的一些大的函数都可以称之为单元。

最后输出和期望值做一个校对来反映现在的代码输出是否和预期的相符,验证了代码的能力,也就是正确性。

通过一个个的单元测试,一方面可以保证质量(这个保证质量意思是说我们代码的整体覆盖率如果足够的情况下,其实我们每次编写新代码加了单元测试一方面保证了新功能本身的整体性,然后由于历史代码也有相关的单元测试,如果整体的测试跑通了以后,又表明了新的代码没有破坏原有代码)。

单元测试-Tips

一般覆盖率:50%~60%,较高覆盖率80%+。 测试分支相互独立、全面覆盖。 测试单元粒度足够小,覆盖单一职责。

单元测试-依赖

依赖管理是有些复杂的,依赖的组件也会很复杂。一般在复杂项目比如大作业,我们可能会依赖一些数据库或者cache和其他组件,或者说直接依赖一些本地的文件。其实这些都属于项目的一些强依赖。我们单元测试需要有两个目标,一个是幂等另一个是稳定。

幂等就是我们每次去重复去运行它的结果其实和之前都是一样的。第二个就是稳定性,就是单元测试是能够相互隔离的,也就是单元测试能在任何时间任何函数进行独立的运行。那要实现这个目的,我们可能就会用到mock测试。