Golang coverprofile输出格式

时间:2015-07-14 17:20:04

标签: testing go cover

提前感谢您的帮助...

我正在尝试理解-coverprofile cover.out中的go test选项,特别是文件的格式。

例如,覆盖server.go会产生cover.out中的输出:

mode: set
github.com/cnuss/api_server/server.go:47.2,48.16 2 0
github.com/cnuss/api_server/server.go:52.2,53.16 2 0
github.com/cnuss/api_server/server.go:57.2,58.16 2 0
github.com/cnuss/api_server/server.go:62.2,63.16 2 0
github.com/cnuss/api_server/server.go:67.2,68.16 2 0
github.com/cnuss/api_server/server.go:72.2,73.16 2 0
github.com/cnuss/api_server/server.go:77.2,78.16 2 0
  1. 每个不同列的含义是什么?
  2. 输出格式是否为“标准”格式,例如gcov,xunit等可以转换成另一种格式吗?
  3. 再次感谢!!

3 个答案:

答案 0 :(得分:22)

字段是:

name.go:line.column,line.column numberOfStatements count

Source

答案 1 :(得分:7)

golang-nuts社区(https://groups.google.com/forum/#!forum/golang-nuts)提供了一些有用的工具,用于将Go覆盖转换为更有用的格式。

JUnit格式(用于总结测试执行):

import curses, subprocess
import signal

# Function that does nothing
def f(*args, **kwargs):
    pass

a = signal.getsignal(signal.SIGTSTP)

curses.wrapper(f)

signal.signal(signal.SIGTSTP, a)

# Call vi to open a file 
subprocess.call("vi /tmp/oo", shell=True)

Cobertura格式(用于详细说明代码覆盖率):

# Prerequisites
go get github.com/jstemmer/go-junit-report
# Tests
go test -v | go-junit-report > report.xml

指向我这个方向的线索在这里: https://groups.google.com/forum/#!topic/golang-nuts/iUc68Zrxk_c

答案 2 :(得分:6)

您使用go cover工具处理封面配置文件:

打开显示带注释源代码的Web浏览器:

    go tool cover -html=c.out

写出HTML文件,而不是启动网络浏览器:

    go tool cover -html=c.out -o coverage.html

为每个函数显示stdout的覆盖百分比:

    go tool cover -func=c.out