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,可以直观地看到每一行代码是否被覆盖到。

Read More: