后端学习 | 青训营笔记

57 阅读2分钟

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


测试 测试是避免事故的最后一道屏障。 测试的分类 :回归测试、集成测试、单元测试 从上到下覆盖率逐渐变大,成本逐渐降低。

单元测试是是在开发阶段,对单独的函数、模块做功能验证,是开发人关注的重点。

单元测试基本规范 所有测试文件以_test.go结尾 函数的命名 func TestXxx(*testing T) 初始化逻辑放到TestMain中 func TestMain(m *testing.M)

函数测试 go func TestMain(m *testing.m){ //测试前的数据装载,配置初始化等前置工作 code := m.Run() //测试后,释放资源的收尾工作 os.Exit(code) } 使用go test -v package 显示详细信息进行测试,测试从TestMain进入。

判断相等,使用断言

```go
    import "github.com/stretchr/testify/assert"
    ...
    assert.Equal(t,expectPutput,output)
```

覆盖率测试

```go
   测试命令: go test xxx_test.go xxx.go --cover
```
一般要求覆盖率在50-60,较高的要求覆盖率在80

依赖测试 稳定(能在任何时间、环境运行测试) 幂等(每一次测试运行都应产生与之前一样的结果) 使用mock机制 将函数在运行时替换成自己写的函数,避免文件或者原函数被改变,但是这里要求对原本的函数输出有了解。

这里遇了一个问题,就是在使用monkey进行函数替换的时候无效,查看了monkey文档和其他资料需要在测试时 go test -v -gcflags=-l 将函数级联优化关闭,坑。 这里具体的使用,比如说当每个功能或者数据库还没有是现实时,又需要对方的回应,可以自己通过mock创造一些回应,以便自己这边代码正常开发运行。

基准测试 对当前代码进行和分析并且优化。

这里由于个人原因需要出门,未完待续....