Go语言测试

*_test.go
单元测试函数
{PASS/FAIL	
测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头
func TestSin(t *testing.T) { /* ... */ }
参数t用来报告测试失败和附加的日志信息
go test如果没有参数指定包 则采用当前目录对应的包,同go build
错误信息一般是:f(x) = y, want z
-v 打印每个测试函数的名字和运行时间
-run=xxx 正则匹配测试函数名
-coverprofile=c.out 测试覆盖率
-covermode=count 每块代码的覆盖次数
 -run=NONE 禁止单元测试
go test -v -run=xxx xxx包名   -coverprofile=c.out
只显示覆盖率摘要
go test -cover

测试报告 绿色被覆盖,红色未覆盖
go tool cover -html=c.out

测试扩展包
xxx_test包

}
基准测试函数
{
Benchmark为前缀的函数
go test -bench=.  -benchmem

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

BenchmarkIsPalindrome-8 1000000 1035 ns/op
ok gopl.io/ch11/word2 2.179s
8表示GOMAXPROCS值
1000000次花了2.179s,每次1.035微妙

}
示例函数
{
Example为前缀的函数
func ExampleIsPalindrome() {
 fmt.Println(IsPalindrome("A man, a plan, a canal: Panama"))
 fmt.Println(IsPalindrome("palindrome"))
 // Output:
 // true
 // false
}
}

剖析方法 这三个一起使用要小心,会影响程序的运行。
$ go test -cpuprofile=cpu.out
$ go test -blockprofile=block.out
$ go test -memprofile=mem.out
go tool pprof生成对应概要文件的可执行程序和对应的分析日志文件


panic应该放在main函数中,真有panic,应该用recover捕获。
如果想在测试代码包里面引用未导出的函数,可以在包内编写_test.go文件导出该函数。

以fmt包为例:
代表fmt包内的产品代码的源文件列表
	go list -f={{.GoFiles}} fmt
fmt包内的测试代码文件
	go list -f={{.TestGoFiles}} fmt
属于测试代码包的代码
	go list -f={{.XTestGoFiles}} fmt
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值