Go test 的测试用例形式
测试用例有四种形式:
- TestXxxx(t *testing.T) // 基本测试用例
- BenchmarkXxxx(b *testing.B) // 压力测试的测试用例
- Example_Xxx() // 测试控制台输出的例子
- TestMain(m *testing.M) // 测试Main函数
Go test 有两种运行模式:
go testgo test -vgo test
go testgo test mathgo test ./...go test .go testgo test-bench-vgo test
go test 的变量有哪些?
- test.short : 一个快速测试的标记,在测试用例中可以使用 testing.Short() 来绕开一些测试
- test.outputdir : 输出目录
- test.coverprofile : 测试覆盖率参数,指定输出文件
- test.run : 指定正则来运行某个/某些测试用例
- test.memprofile : 内存分析参数,指定输出文件
- test.memprofilerate : 内存分析参数,内存分析的抽样率
- test.cpuprofile : cpu分析输出参数,为空则不做cpu分析
- test.blockprofile : 阻塞事件的分析参数,指定输出文件
- test.blockprofilerate : 阻塞事件的分析参数,指定抽样频率
- test.timeout : 超时时间
- test.cpu : 指定cpu数量
- test.parallel : 指定运行测试用例的并行数
Go test flag
- -args
- -c
- -exec xprog
- -i
- -o file
- -bench regexp
- -benchtime t
- -count n
- -cover
- -covermode set,count,atomic
- -coverpkg pkg1,pkg2,pkg3
- -cpu 1,2,4
- -list regexp
- -parallel n
- -run regexp
- -short
- -timeout d
- -v
- -benchmem
- -blockprofile block.out
- -blockprofilerate n
- -coverprofile cover.out
- -cpuprofile cpu.out
- -memprofile mem.out
- -memprofilerate n
- -mutexprofile mutex.out
- -mutexprofilefraction n
- -outputdir directory
- -trace trace.out
更多中文文档:
什么是单元测试?
单元测试,是一种测试我们的代码逻辑有没有问题,有没有按照我们所期望的来运行,通过它来保证我们的代码质量。
顾名思义,单元测试,大多都是对某一个函数方法进行的测试,以让我们的测试粒度最细。
如何编写单元测试?
go test
func TestXxx(*testing.T)
子测试
如何跳过一些测试
什么是基准测试?
基准测试,是一种测试代码执行性能的方式,你可以将多种代码实现进行比对。
go test -bench . -test.cpuprofilego test -bench . --benchmem
如何编写基准测试?
func BenchmarkXXX(b *testing.B) { }
什么是 HTTP 测试?
顾名思义,就是测试 web http 协议的测试。
如何编写 HTTP 测试?
Go 标准库为我们提供了一个 httptest 的库,通过它就能够轻松的完成 HTTP 的测试。
什么是测试覆盖率?
由单元测试的代码,触发运行到的被测试代码的代码行数占所有代码行数的比例,被称为测试覆盖率,代码覆盖率不一定完全精准,但是可以作为参考,可以帮我们测量和我们预计的覆盖率之间的差距。
go test
go test -v -coverprofile=c.out
go toolc.out
go tool cover -html=c.out -o=tag.html
其他更多,可以参考:测试
# 生成指定 package 的测试覆盖率(fib.out 后面不带参数的,默认是命令所在目录)
$ go test -v -covermode=count -coverprofile fib.out
# 查看汇总的 fib 测试覆盖率
$ go tool cover -func=fib.out
# 生成 html
$ go tool cover -html=fib.out -o fib.html
VSCode Go Test Coverage 插件
测试比较工具
- benchcmp
- benchviz