我的问题是我想从 Go 测试中获取 Junit 报告。问题是这本身是不可能的。我找到了几个可以做到这一点的工具,但出现了一个问题。 我发现了 go-junit-report 工具,非常好,但我无法使用它:
go test -count=1 --run Test ./test/... | tee -a test-output.log
对于此测试执行,我通过管道传输了此“tee”命令,这与 junit 工具不兼容:
go test -v -bench . -count=1 --run Test ./test/... 2>&1 | go-junit-report > report.xml
我该如何克服这个问题?那么,不仅正确执行了 tee 命令,而且还正确执行了 junit 中的报告?
ps:我还发现了 gotestsum 工具,它可以直接与管道命令一起使用,但这意味着更改测试命令,也许还有基础设施,所以不太好。
我不知道你想让Tee为你做什么。 如果你只想用一个命令输出两个文件:
go test -v 2>&1 ./... | tee -a coverage.out | go-junit-report > report.xml
你不能这样做。
如果 gojunit 不能看到 stderr,则不得使用
2>&1
将 stderr 复制到 stdout,在这种情况下,您会从 test-output.log 中丢失 stderr。
您要么必须牺牲 test-output.log 中的 stderr 输出,要么运行
go test
两次,一次将 stdout 和 stderr 写入 test-output.log,一次通过 gojunit 进行管道传输。