前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang单元测试系列-快速上手

Golang单元测试系列-快速上手

原创
作者头像
jerryteng
修改2022-06-16 19:38:01
1K0
修改2022-06-16 19:38:01
举报
文章被收录于专栏:jerryteng的专栏

首先我们来看为什么要写单元测试?

  • A. 大牛都这么做
  • B. 老板要求的
  • C. 让项目看起来专业一点
  • D. 达到评审规则的覆盖率
  • E. 减少bug,提高代码质量,促进代码设计,降低测试成本,提升代码可扩展性

简单来说,无论函数如何实现,单测可以保证我们始终能得到预期的结果。 最近半年我们在提升我们项目的代码单测覆盖率,来提前发现代码中的问题。单元测试可以有效的提前发现问题,也可以很好的实现测试左移。

什么是测试左移呢 ?

说到测试左移,首先来看一下 ,一般系统开发的流程。

系统开发的流程
系统开发的流程

在经过一系列的 需求分析、概要设计、详细设计、编码开发、单元测试、集成测试、系统测试之后上线。

在这个过程中编码开发的时候同时写好自动化的单元测试,就是把测试的位置往左移了,就是测试左移。

写单元测试的时候要注意: 测试的对象是对代码中的一个函数、方法,它关注的是代码局部,而不是整个系统。

另外 ,单元测试是要隔绝对数据的依赖的,例如用mock覆盖函数内部的网络IO、db操作等重逻辑。

这里要提一个测试驱动开发,TDD , 现在我们没有采用这种形式,在我们看来,采用TDD开发go项目不是那么顺。

编写测试用例用到的库:

testing:golang自带的轻量级测试框架,可以方便快速的写出table-driven的用例,支持go test命令执行单测。

goconvey:github.com/smartystreets/goconvey,用来组织测试用例,提供了很多断言,兼容go test,有 web ui 。

gomock:github.com/golang/mock,用来给接口打桩的,通过mockgen可以自动生成对应的接口mock代码。

上手:

如何快速的编写测试用例呢 ?

这里就需要介绍一个库: https://github.com/cweill/gotests

为源文件中所有的函数和方法生成test方法: gotests -all -w -i XXX.go ,可以直接用命令行生成 这个文件的所有方法的测试用例,这也是我们没有采用 TDD的开发方式的原因,我们写出大的业务代码框架,之后用gotests来生成测试用例会非常方便,也非常迅速,会大大降低我们因为写测试用例而占用的开发时间。

所以没有采用TDD,先写测试用例,之后写业务代码。

当然也可以在 goland 和 vscode 使用

点击就生成了一个测试用例,而且自动是表格测试的方式,

这样就可以编写了,我前面也写了一篇如何写好测试用例的文章,这里不再赘述:

https://cloud.tencent.com/developer/article/1500525

总结:

坚持在开发过程中写单测是一件困难的事情,它的确会增加我们的开发量。甚至如果代码设计较差,单元测试也会随着每次的代码改动而失效,需要推翻重来。另外,把握好单测的范围、粒度、设计也不是一蹴而就的。

但是写单测也是一件正确的事情。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先我们来看为什么要写单元测试?
  • 什么是测试左移呢 ?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档