首页 > 后端开发 > Golang > 如何合并多个 Go 包的代码覆盖率结果?

如何合并多个 Go 包的代码覆盖率结果?

Barbara Streisand
发布: 2024-12-24 11:44:17
原创
623 人浏览过

How to Combine Code Coverage Results from Multiple Go Packages?

如何整合 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板