这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
四、测试
测试文件以 _test.go 结尾
函数 func TestXxx(*testing.T)
初始化逻辑放在 TestMain(m *Testing.M) 里面
4.1单元测试assert
"github.com/go-playground/assert/v2"
func JudgePassLine(score int16) bool {
if score >= 60 {
return true
}
return false
}
func TestJudgePassLine(t *testing.T) {
isPass := JudgePassLine(70)
assert.Equal(t, true, isPass)
}
4.2 覆盖率
go test xx.go xx_test.go --cover需要包含测试go文件包含的所有程序,用以测试
4.3依赖
我们的单测需要保证稳定性和富等性,稳定是指相互隔离,能在任何时间,任何环境,运行测试。幂等是指每次测试运行都应该产生与之 前一样的结果。 而要实现这一目的就要用到mock机制。
4.4Mock
monkey github.com/bouk/monkey
快速Mock函数:为一个函数/方法打桩
对ReadFirstline打桩测试,不再依赖本地文件
打桩的目的主要有:隔离、补齐、控制。
4.5基准测试
BenchmarkXxx(b *testing.B)开头 用于测试性能
基准测试的函数名须以 Benchmark 开头, 参数须为 *testing.B;循环中的 b.N, go 会根据系统情况生成,不用用户设定。
基准测试主要是通过测试 CPU 和内存的效率问题,来评估被测试代码的性能,进而找到更好的解决方案。比如链接池的数量不是越多越好,那么哪个值才是最优值呢,这就需要配合基准测试不断调优了。
项目实战
后续补充