如何获得文件夹的全局测试覆盖率
How to get a global test coverage for a folder
显示代码覆盖率时,去测试显示每个包的代码覆盖率(百分比)。
有没有办法显示一个文件夹的摘要,并考虑到所有子文件夹(子包)?
我想要的是整个项目的全局代码覆盖率,一个显示文件夹和所有子文件夹的代码覆盖率的数字。
我找到了解决问题的方法。
我首先运行对所有包进行测试并将测试结果存储在一个文件中:
go test --coverprofile=coverage.out ./...
然后我运行一个bash脚本来计算我的结果
#!/usr/bin/env bash
covered=0
total=0
while IFS='' read -r line || [[ -n "$line" ]]; do
IFS=' ' read -r -a array <<< "$line"
total=$(($total+${array[1]}))
if [ "${array[2]}" = "1" ]; then
covered=$(($covered+${array[1]}))
fi
done < ""
echo $(awk "BEGIN { pc=100*${covered}/${total}; i=int(pc); print (pc-i<0.5)?i:i+1 }")
无需任何外部工具/使用:
即可覆盖所有子包
go test --coverprofile=coverage.out -coverpkg=./your/package/... ./your/package
-coverpkg pattern1,pattern2,pattern3
Apply coverage analysis in each test to packages matching the patterns.
The default is for each test to analyze only the package being tested.
See 'go help packages' for a description of package patterns.
Sets -cover.
运行之后:
go test --coverprofile=coverage.out ./...
运行:
go tool cover -func=coverage.out
您将在结果末尾看到总百分比
显示代码覆盖率时,去测试显示每个包的代码覆盖率(百分比)。
有没有办法显示一个文件夹的摘要,并考虑到所有子文件夹(子包)?
我想要的是整个项目的全局代码覆盖率,一个显示文件夹和所有子文件夹的代码覆盖率的数字。
我找到了解决问题的方法。
我首先运行对所有包进行测试并将测试结果存储在一个文件中:
go test --coverprofile=coverage.out ./...
然后我运行一个bash脚本来计算我的结果
#!/usr/bin/env bash
covered=0
total=0
while IFS='' read -r line || [[ -n "$line" ]]; do
IFS=' ' read -r -a array <<< "$line"
total=$(($total+${array[1]}))
if [ "${array[2]}" = "1" ]; then
covered=$(($covered+${array[1]}))
fi
done < ""
echo $(awk "BEGIN { pc=100*${covered}/${total}; i=int(pc); print (pc-i<0.5)?i:i+1 }")
无需任何外部工具/使用:
即可覆盖所有子包go test --coverprofile=coverage.out -coverpkg=./your/package/... ./your/package
-coverpkg pattern1,pattern2,pattern3 Apply coverage analysis in each test to packages matching the patterns. The default is for each test to analyze only the package being tested. See 'go help packages' for a description of package patterns. Sets -cover.
运行之后:
go test --coverprofile=coverage.out ./...
运行:
go tool cover -func=coverage.out
您将在结果末尾看到总百分比