这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
复习整理了一下之前课程中的依赖管理和测试的一些内容
依赖管理Go Module
go.mod配置文件。第一行是依赖管理基本单元,第二行是原生库(Go版本),第三部分是单元依赖(具体的管理)
版本表达1:V1.3.0:MAJOR大版本(互相不兼容).MINOR(新增功能,MAJOR内兼容).PATCH(bug修复)
版本表达2:vx.x.x-yyyymmddhhmmss-hash码前缀
go.mod文件中:
indirect//间接依赖,即A->B->C中的A->C
incompatible:Go语言推荐在V1以上时要写明major号(projact/是v1,projact/v2/是v2),否则就要加上incompatible
编译选择时,选择兼容的(即major大版本)的最新版本
依赖分发Proxy
开发者直接依赖代码管理平台,依赖的代码不稳定,容易被修改
Go Proxy会缓存源代码,且即使源码删除也会保存
GOPROXY="a.cn",https://b.cn,dirct…
go get ...@update获取最新
go get ...@none删除依赖
go get ...@v1.1.1更新到指定版本
go get ...@22dfdfs3更新到指定commit
go get ...@master分支的最新commit
go mod init初始化创建go.mod文件
go mod download 下载模块
go mod tity增加新的依赖,删除冗余依赖
测试
回归测试(用着试试)->集成测试(基于接口自动化测试)->单元测试(开发对模块的验证)
覆盖率逐层变大,成本逐层降低
单元测试
测试文件命名:开发文件_test.go test输入channel.go channel_test.go运行(一定要和测试文件一起编译运行)
测试函数
func TestXxx(t *testing.T) {
//准备工作
code := t.Run()
os.Exit(code)
}
(依赖没有的话go get xxx)
代码覆盖率:检查全面不全面
go test hello_test.go hello.go --cover 计算代码覆盖率
一般代码覆盖率50-60,80+较高(所以函数小好测试)
幂等:多次运行后结果一致
代码要求幂等和稳定
mock测试:为一个函数打桩(替换,模仿原函数的输入输出,用打桩函数替换原函数)
例 原函数从文件读取一行,对原本从文件读取一行的ReadFirstLine函数打桩替换成直接返回一行内容的字符串给下一个ProcessFirstLine函数
基准测试
测试性能,类似于单元测试
例:对服务器的Select()随机选择函数测试
其中,RunParallel是并行测试,ResetTimer()重置计时器
go test -bench=.(但是goland只能-bench .)表示运行所有基准测试