类别
回归测试->集成测试->单元测试,盖率逐层变大,成本却逐层降低
单元测试
规则
- 所有测试文件以_test.go结尾
- func TestXx(t *testing.T)
- 初始化逻辑放到func main(m *testing.M)中
Assert
- import github.com/stretchr/testify/assert
- 使用assert.Equal(t, a, b)
覆盖率
- go test --cover 在运行测试代码的同时计算出覆盖率
- Tips
- 一般覆盖率:50-60%,较高覆盖率80%+
- 测试分支相对独立、全面覆盖
- 测试单元粒度足够小,函数单一职责
依赖
- 幂等:任意多次执行所产生的影响均与一次执行的影响相同
- 稳定:单元测试是相对独立
- 快速Mock函数
- 为一个函数打桩
- 为一个方法打桩
- 不再依赖本地文件
- 示例:
monkey.Patch(Xxx, func() string { return })
defer monkey.Unpath(ReadFirstLine)
基准测试
- 测试一段程序运行时的性能
- func BenchmarkXxx(b *testing.B)
- b.ResetTimer()进行时间重置
- b.RunParallel()并行测试
- fastrand提高高并发下的速度