如何整合 Go 中多个包的代码覆盖率结果
在 Go 库中测试多个包时,获取代码覆盖率的全面视图。默认情况下,将 -cover 标志与 go test 结合使用可提供各个包的覆盖率信息。
要聚合所有包的覆盖率数据,您可以采用以下两种方法之一:
使用Go 1.10 及更高版本中的 -coverpkg:
在 Go 1.10 及更高版本中,-coverpkg 标志允许您指定以逗号分隔的覆盖目标列表。要覆盖测试包的所有依赖项,请使用:
go test -v -coverpkg=./... -coverprofile=profile.cov ./... go tool cover -func profile.cov
在早期 Go 版本中使用 Bash 脚本:
对于 1.10 之前的 Go 版本,请考虑使用用于收集和整合覆盖率数据的 Bash 脚本:
#!/bin/bash set -e echo 'mode: count' > profile.cov for dir in $(find . -maxdepth 10 -not -path './.git*' -not -path '*/_*' -type d); do if ls $dir/*.go &> /dev/null; then go test -short -covermode=count -coverprofile=$dir/profile.tmp $dir if [ -f $dir/profile.tmp ] then cat $dir/profile.tmp | tail -n +2 >> profile.cov rm $dir/profile.tmp fi fi done go tool cover -func profile.cov
此脚本迭代目录Go 文件,在启用覆盖的情况下运行测试并将结果附加到合并的配置文件 (profile.cov) 中。然后,您可以使用 go tool cover 生成总体代码覆盖率的摘要。
以上是如何合并多个 Go 包的代码覆盖率结果?的详细内容。更多信息请关注PHP中文网其他相关文章!