Go (Golang) 工具之单元测试 go-junit-report | go的单元测试

什么是go-junit-report

github.com/jstemmer/go-junit-report

将go test输出转换为 junit xml

go test

安装和使用

go install github.com/jstemmer/go-junit-report@latest

go-junit-report 读取stdin的完整GO测试输出,并将JUNIT兼容XML写入stdout。为了捕获构建错误以及测试输出,将stdout和stderr重定向到go-junit-report。

go test -v 2>&1 | go-junit-report > report.xml

例如,还支持解析benchmark 输出,例如

go test -v -bench . -count 5 2>&1 | go-junit-report > report.xml
-set-exit-code
go-junit-report-help
go的单元测试
  • 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码
  • 你必须import testing这个包
  • 所有的测试用例函数必须是Test开头
  • 测试用例会按照源代码中写的顺序依次执行
  • 测试函数TestXxx()的参数是testing.T,我们可以使用该类型来记录错误或者是测试状态
  • 测试格式:func TestXxx (t testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。
  • 函数中通过调用testing.T的Error, Errorf, FailNow, Fatal, FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。

单元测试执行

go的自带go test还是很好用的,执行的前提是需要写对应的单元测试(功能测试、性能测试 可写在1个测试文件里)

go test  #执行单元测试
go test -v  #打印执行的详细信息,即使测试成功(默认情况下测试成功是不打印结果的)
go test -v xxx #执行指定文件的单元测试(此处注意,go只会读取go/src下面的目录。所以写文件路径不需要加go/src)
go test -v xxx> test # 执行指定文件的单元测试并且将结果写入文档(文件名根据自己需要设置,文件内容=终端显示)
go test -v xxx -json  # 执行指定文件的单元测试并且将结果转化为json格式
go test -v xxx -json > test.json # 执行指定文件的单元测试并且将结果转化为json格式写入文档(文件名根据自己需要设置,文件内容=终端显示)
go test -bench=.  #执行性能测试
go test -bench=. -v #显示执行的详细信息

直接生成xml报告

go get -u github.com/jstemmer/go-junit-report  #安装报告模板插件
go test -v xx/xx | go-junit-report > test.xml  #测试指定文件,并直接生成xml报告