我有一个由几个包组成的库。在运行测试时,我正在使用' -cover'标志和它单独显示每个包的覆盖信息。如下:
--- PASS: TestSampleTestSuite (0.00s)
PASS
coverage: 28.7% of statements
ok github.com/path/to/package1 13.021s
? github.com/path/to/package2 [no test files]
=== RUN TestAbc
--- PASS: TestAbc (0.43s)
PASS
coverage: 27.7% of statements
有没有办法轻松获得完整的覆盖率概述,以便对整个项目的覆盖率有所了解?
更新:这是我正在使用的go测试命令
go test ./... -v -short -p 1 -cover
答案 0 :(得分:6)
以下是从https://github.com/h12w/gosweep中提取的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