单侧模拟mysql客户端工具_男神鹏:golang 单侧测试框架

1.单元测试框架调研

名称评分特点

testing

golang 官方自带

不支持断言和 mock

gocheck

近几年无更新

基于testing,支持断言,setup,suit。

testify

start :10000+

持续更新

基于testing,与gocheck 相似.suite包可以给每个测试用例进行前置操作和后置操作的功能(例如初始化和清空数据库)。

goconvey

start :5000+

持续更新

直接集成go test;

可以管理和运行测试用例;提供了丰富的断言函数;

支持很多 Web 界面特性。

gomonkey

start :2000+

持续更新

可以为全局变量、函数、过程、方法mock。

httpexpect

start :1400+

持续更新

适用于对http的clent进行测试,对服务端的回包进行打桩;支持对不同方法(get,post,head等)的构造,支持自定义返回值json。

sqlmock

start :2600+

持续更新

适用于和数据库的交互场景。可以创建模拟连接,编写原生sql 语句,编写返回值或者错误信息并判断执行结果和预设的返回值

2. 方案基本选型:testify + gomonkey; 附加 sqlmock

需要写单元测试的代码原则:

外部依赖少,代码又简单的代码。自然其成本和价值都是比较低的,可选;

外部依赖很少,业务复杂代码,最有价值写单元测试的。

testify基于gotesting编写,所以语法上、执行命令行与go test完全兼容。testify的 assert包提供了丰富的断言方法,避免testing的多层if else。此外提供了suite包,可以给每个测试用例进行前置操作和后置操作的功能,这个方便的功能,在前置操作和后置操作中去初始化和清空数据库。同时,还可以声明在这个测试用例周期内都有效的全局变量。

//安装testify

go getgithub.com/stretchr/testify

//更新testify

go get-u github.com/stretchr/testify

前提:

测试文件,以_test.go结尾,与被测文件放于相同目录

测试函数,函数名以Test开头,并且随后的第一个字符必须为大写字母或下划线,如:TestCategoryService_AddCategory

测试函数,参数为t testing.T;对于bench测试,参数为btesting.B

1.快速添加测试方法。右键方法,选择go to-test,生成test文件

tapd_20391822_1593263610_48.png

2.给定对应case,使用assert 包中的方法添加断言,替换testing 的if else 判断。

tapd_20391822_1593263753_20.png

assert 包还提供了更多断言方法

assert 断言库

require包提供了与assert包相同的全局函数,但它们不返回布尔结果,而是终止当前测试。

测试套件:

一种针对拥有多个实现的通用接口的测试,一个接口多个实现的时候不用重复的为特定版本书写测试。

前提:

测试套件文件名必须以 test.go 结尾。例:abc_test.go

文件中的函数以 Test,Benchmark,Example 开头。例子:TestAbc(),BenchmarkAbc(), ExampleAbc()。

func (s *SuiteType)SetUpSuite(c *C)-在测试套件启动前执行一次

func (s *SuiteType)SetUpTest(c *C)-在每个用例执行前执行一次

func (s *SuiteType)TearDownTest(c *C)-在每个用例执行后执行一次

func

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值