测试Golang程序

建立软件包

假如在工作区有一个软件包叫config/config.go:

1
2
3
4
5
package config
func GetLength(content string) int{
return len(content)
}

功能性测试

则建立config/config_test.go:

1
2
3
4
5
6
7
8
9
10
package config
import "testing"
func Test_GetLength(t *testing.T){
num := GetLength("Hi")
if num != 2{
t.Error("'Hi' should length : 2,but it's ",num)
}
}

则测试config软件包可以直接命令:

1
2
3
4
5
6
$ go test -v github.com/GoYi/config/
=== RUN Test_GetLength
--- PASS: Test_GetLength (0.00s)
PASS
ok github.com/GoYi/config0.004s

性能测试

再建立config_b_test.go:

1
2
3
4
5
6
7
8
9
package config
import "testing"
func Benchmark_GetLength(b *testing.B) {
for i := 0; i < b.N; i++ {
GetLength("Hi")
}
}

运行:

1
2
3
4
5
6
$ go test -v -bench=".*" github.com/GoYi/config/
=== RUN Test_GetLength
--- PASS: Test_GetLength (0.00s)
PASS
Benchmark_GetLength2000000000 0.60 ns/op
ok github.com/GoYi/config1.263s

在性能测试中生存CPU状态图

1
2
$ go test -v -bench=".*" -cpuprofile=cpu.prof
-c github.com/GoYi/config/

此命令会生存二进制文件config.test

绘制状态图

1
$ go tool pprof config.test cpu.prof

注意: 在此例中CPU的使用很少,没有cpu.prof文件生存。

吴羽舒 wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!