testing

Go单元测试基础

​ Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试。在包目录内,以_test.go为后缀名的源文件都是go test的一部分,而不是go build的构建部分。

# 查看帮助
go test -h
# 命令形式
go test [build/test flags] [packages] [build/test flags & test binary flags]

单元测试文件

测试函数

覆盖率测试

语句的覆盖率是指在测试中至少被运行一次的代码占总代码数的比例。我们使用go test命令中集成的测试覆盖率工具,来度量下面代码的测试覆盖率,帮助我们识别测试和我们期望间的差距。

基准测试

​ 基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;*testing.B参数除了提供和*testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。

func BenchmarkIsPalindrome(b *testing.B) {
    for i := 0; i < b.N; i++ {
        IsPalindrome("A man, a plan, a canal: Panama")
    }
}
go test -bench=. -run BenchmarkIsPalindrome
go test -bench=. -run BenchmarkIsPalindrome -benchmem
......

参考资料