如何借助Go标准工具将go test的report.json转为人类可读格式?
Go测试JSON报告转可读格式的解决办法
Go标准工具链里没有专门用来把go test生成的JSON报告转回人类可读文本的工具,但有两个简单方案能搞定:
用
jq解析过滤:虽然jq不是Go自带,但它是很常用的JSON处理工具,执行下面的命令就能直接揪出所有失败的测试用例信息:jq '. | select(.Action == "fail")' report.json输出结果会包含失败测试的包名、用例名称和具体错误原因,足够快速定位问题。
写几行极简Go脚本:如果不想依赖第三方工具,用Go标准库写个小脚本就行,比如新建
parse_test.go文件:package main import ( "encoding/json" "fmt" "os" ) type TestEvent struct { Action string Package string Test string Output string } func main() { dec := json.NewDecoder(os.Stdin) for { var e TestEvent if err := dec.Decode(&e); err != nil { break } if e.Action == "fail" { fmt.Printf("包名: %s\n测试用例: %s\n错误信息:\n%s\n---\n", e.Package, e.Test, e.Output) } } }然后运行:
go run parse_test.go < report.json这个脚本只会输出失败测试的关键信息,完全基于Go标准库,不需要额外装东西。
另外,其实可以从源头避免事后处理——测试时同时生成JSON报告和可读输出:
go test -coverprofile cover.out ./... -json | tee report.json | go tool test2json -t
这样既存好了SonarQube需要的JSON文件,又能实时看到正常的测试输出,失败时当场就能定位问题。
内容的提问来源于stack exchange,提问作者TieDad
相关产品推荐
相关产品推荐

