Go 语言里的单元测试覆盖率
Go 语言的项目里,单元测试一般这样写:
func Test_Xxx(t *testing.T) {
if err := Xxx(); err != nil {
t.Errorf("bad")
} else {
t.Logf("ok")
}
}
输入命令 go test -v
运行测试,并观察结果。
PASS
ok xxx 0.123s
测试覆盖率
测试覆盖率,表示在测试里所覆盖到的代码的占比。可以这样来查看:
$ go test -cover
PASS
coverage: 67.8% of statements
还有一种方法可以看到覆盖的代码。第一步生成分析结果文件,再把结果文件转化成更友好的 html 文件:
$ go test -coverprofile=c.out
PASS
coverage: 67.8% of statements
$ go tool cover -html=c.out -o coverage.html
通过查看生成的 coverage.html
,可以直观地看到每一行代码是否被覆盖到。