回答

收藏

如何衡量 Go 中的测试覆盖率

技术问答 技术问答 248 人阅读 | 0 人回复 | 2023-09-12

有没有人成功为 ?Go 单元测试生成代码覆盖率?网上找不到相关工具。
) x( S0 q5 g% h: j! l                                                                ' }( S  p0 ?- B0 m  B* c
    解决方案:                                                                % W0 o  y& ]# M/ ?
                                                                请注意,Go 1.2(2013年第四季度,rc1 可用)现在显示测试覆盖率结果( D% Y9 r' x" q# p( R! l. C1 r
主要新功能go test是它现在可以在新的、单独安装的 中计算和计算go tool cover在程序的帮助下,显示测试覆盖率结果
8 R! V) E9 w* e+ _该cover工具是一部分go.toolssubrepository。可通过运行安装& x$ w+ y3 f& R
golang$ go get golang.org/x/tools/cmd/cover1 e- d/ m5 N$ c6 h8 F
封面工具做两件事。
  ]/ m- p8 l4 P' V4 I首先,当 go test”被赋予-cover当标记时,它会自动重写包的源代码并插入测试句。然后像往常一样编译和操作测试,并报告基本覆盖统计信息:$ go test -coverprofile fmtcoverage.html fmt ok fmt 0.060s 覆盖率:91.4% 语句 $% K* t3 v6 k# D$ V2 g+ l
其次,对于更详细的报告,go test不同的标志可以创建覆盖配置文件,go tool cover然后用 调用的覆盖程序分析文件。提到:
8 N8 V- X$ A+ n( E. y最新版本的 Go (2013/09/19) 使用:' Z3 S+ R* ]1 l; `; e
golanggo test -coverprofile  * e; E$ Q' K0 q1 P' _4 a
如何生成和分析覆盖率统计信息的详细信息可以通过操作下列命令找到
! R9 y6 k4 `! d/ Egolang$ go help testflag$ go tool cover -help
- ~, s  ~4 F( z, S% n+ `评论中提到:( B+ U4 Y9 ^1 g' E1 L: P0 p
go test -coverprofile cover.out`然后在您的默认浏览器中`go tool cover -html=cover.out`打开`cover.out
6 V' I+ |# b4 I; [% N- B我甚至不想等待浏览器打开,所以我定义了这个别名:
/ U& t& Z  R7 R" D/ {golangalias gc=grep -v -e " 1$" cover.out
' T2 r9 L/ R4 }! v4 J2 T4 K. m我只需要输入gc,并且有所有行列表不是未覆盖的(这里用coverage.out行不结束1)。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则