这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
测试
这篇文章重点讲测试
测试的作用不言而喻,是为了项目上线后能具有稳定和安全性,测试就是为了项目上线后防止事故的发生。测试是避免事故的最后一道屏障,所以测试在项目开发中是必然的
三种测试方式: 1.回归测试 2.集成测试 3.单元测试
这篇文章主要讲单元测试
单元测试 -assert
单元测试规则:
1.所有测试文件以_test.go
2.func TestXxx(*testing T)
testify包:github.com/stretchr/testify/assert
func TestToString(t *testing.T) {
output := ToString(1)
expect := "1"
assert.Equal(t, expect, output)
}
3.初始化逻辑放入TestMain中
func TestMain(m *testing.M) {
fmt.Println("begin")
m.Run()
fmt.Println("end")
}
命令格式:go test [flag][packages]
覆盖率:覆盖就是测试所覆盖的代码范围,覆盖率是依据测试时执行函数的行数 用加--cover参数来查看单元测试 -MOCK
有些函数中有外部依赖,所以测试的时候外部依赖如:file,db,cache,断言测试的结果受到外部依赖的影响,所以有了mock模拟测试,从而使的测试变为稳定&幂等。
monkey包:github.com/bouk/monkey
快速MOCK函数:为一个函数打桩为一个方法打桩。基准测试
是一种测量和评估软件性能指标的活动,他能评估软件的性能。当需要优化代码时,是一个很好的指标。
命令:go test -bench=.
格式:func() BenchmarkXxxx(b *testing.B)
func BenchmarkSelect(b *testing.B) {
InitServer()
//重置时间
b.ResetTimer()
for i := 0; i < b.N; i++ {
Select()
}
}
func BenchmarkSelectConcurrent(b *testing.B) {
InitServer()
b.ResetTimer()
//并发
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
Select()
}
})
}
测试结果:
总结:
三种测试分别在不同的使用场景下,要依据实际情况去使用,测试十分的重要,它关系到一个软件是否能正常上市,要有测试的习惯。