如何衡量代码覆盖Golang?(How to measure code coverage in Go

2019-07-29 07:33发布

有没有人成功地生成代码覆盖率转到单元测试? 我无法找到该网页上的工具。

Answer 1:

请注意, 进入1.2(2013年第四季度,RC1可用)现在将显示测试覆盖率结果

的一个主要的新功能go test的是, 它现在可以从一个新的,单独安装“计算,并与帮助, go tool cover ”方案,显示测试覆盖率结果

cover工具是一部分go.tools subrepository 。 它可以通过运行安装

$ go get golang.org/x/tools/cmd/cover

封面工具做了两两件事。

  • 首先,当“ go test ”被赋予-cover标志,它是自动运行重写程序包的源和插入仪器语句。 该测试然后编译和运行像往常一样,和基本覆盖的统计报告:
$ go test -coverprofile fmt
ok      fmt 0.060s  coverage: 91.4% of statements
$

其次,对于更详细的报告,不同的标志“走出去检验”可以建立一个覆盖配置文件,该套方案,调用“ go tool cover ”,然后可以分析。

弗兰克Shearar 提到 :

围棋(2013年9月19日)的最新版本中使用:

go test -coverprofile <filename> <package name>

关于如何生成和分析覆盖统计详细信息可以通过运行命令来发现

$ go help testflag
$ go tool cover -help

伊万黑色提到的评论 :

go test -coverprofile cover.out然后
go tool cover -html=cover.out -o cover.html打开cover.html在浏览器

我甚至不希望等待浏览器打开,所以我定义这个别名:

alias gc=grep -v -e " 1$" coverage.out

我只需键入gc ,和尚未覆盖的所有行的列表(此处用coverage.out线不能与“结尾1 ”)。



Answer 2:

围棋自带的测试和覆盖真棒工具。 尽管所有的围棋工具是有据可查的go tool cover -help我建议阅读官方博客围棋的封面故事文章 。 它有大量的例子,我强烈推荐它!

我有这个功能在我的〜/ .bash_profile中。 (你可以将其粘贴在终端试试看)。

cover () { 
    t="/tmp/go-cover.$$.tmp"
    go test -coverprofile=$t $@ && go tool cover -html=$t && unlink $t
}

然后,只需cd成细末项目/包文件夹和类型cover 。 这将打开浏览器的可视化工具,可以显示您当前的包中的每个文件的测试和未测试的代码。 非常有用的命令! 我强烈推荐寻找究竟是不是100%测试呢! 所显示的结果是每个文件。 从降下来左上角你可以看到所有文件的结果。

使用这个命令,也可以检查任何包,例如覆盖:

cover fmt

从这个命令中终端的输出将是:

ok      fmt 0.031s  coverage: 91.9% of statements

此外,在您的浏览器,你会看到该工具以红色显示的未覆盖测试,所有代码行:

它也可以只保存,而不是在浏览器中打开的HTML文件覆盖。 当你的测试+覆盖范围由像詹金斯CI工具来运行这是在的情况下非常有用的。 这样,你可以从一个中央服务器和整个团队服务覆盖范围文件就能看到每个构建覆盖效果。



Answer 3:

这是正确的在这里 ,一些文档在这里 。

$ go tool
6a
6c
6g
6l
addr2line
api
cgo
cov
dist
ebnflint
fix
gotype
nm
objdump
pack
pprof
prof
vet
yacc
$ go tool cov -h
usage: cov [-lsv] [-g substring] [-m minlines] [6.out args...]
-g specifies pattern of interesting functions or files
go tool cov: exit status 1
$

我没有用它,这是我所知道的。



Answer 4:

除了上述的很好的答案,我觉得这三条线是最简单的方式得到它(包括所有包):

go test -v -coverprofile cover.out ./YOUR_CODE_FOLDER/...
go tool cover -html=cover.out -o cover.html
open cover.html

需要注意的是在HTML文件中,你会发现一个下拉按钮,将引导您的所有文件。



Answer 5:

如果你喜欢看未覆盖的线路按功能直接在终端我改写了这个目的,盖的工具。 它可在https://github.com/gregoryv/uncover 。

用法

go get -u github.com/gregoryv/uncover/...
go test -coverprofile /tmp/c.out
uncover /tmp/c.out

截图



Answer 6:

通过帮助菜单和其他回答这个问题的启发,只需要运行:

f=cover.out; if [ -f $f ]; then rm $f; fi; go test ./... -coverprofile $f && \
go tool cover -html $f


Answer 7:

测试范围为Golang

go get github.com/axw/gocov/gocov go get -u gopkg.in/matm/v1/gocov-html

查看其是否正确安装,你必须从你的终端接入

运行测试用例

如果你运行测试情况下,将REDER根据该文件,你会得到的代码覆盖率报告以html文件的上传.json文件

gocov test >your_Coverage_report.json

一旦你的测试用例完成生成HTML文件报表使用以.json

gocov-html your_Coverage_report.json >your_Coverage_report.html

参考

GoTest覆盖工具去郎

进入测试报告工具

替代方法

入乡随俗测试覆盖率

go test -coverprofile=coverage.out
go tool cover -html=coverage.out


Answer 8:

一个快速简便的方法是使用自带的内置去覆盖工具:

$去测试-coverprofile cp.out //发出覆盖一个衬垫个明智

你执行上面的命令后,如果您想直观地看到代码覆盖(如覆盖陈述和遗漏等)

$去工具罩-html = cp.out

注意:您需要执行的文件夹中,你希望看到的覆盖上面的命令



Answer 9:

尝试使用盖亚-泊坞窗/基去-建造码头工人形象。

这是一个码头工人形象,包含了所有你为了构建和测试覆盖率的需要。 泊坞窗容器中运行测试覆盖率与项目的测试覆盖率结果造成设备罩起来的文件夹。

docker run --rm -v "$PWD":$PROJECT_PATH -w $PROJECT_PATH $BUILDER_IMAGE_NAME /go/script/coverage.sh

该测试覆盖脚本在所有项目上运行的文件夹,并生成,每个文件夹文件夹设备罩起来 JUnit和覆盖报告里面,一个将所有项目的覆盖报告的测试。

Codecov还建议,收集覆盖率结果的脚本: 多个文件



文章来源: How to measure code coverage in Golang?