Go Test - Junit results



我的问题是我想从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工具,它可以直接与管道命令一起工作,但这意味着要更改测试命令,可能还需要更改基础结构,所以不太好。

你不能这么做。

如果gojunit不能看到stderr,你不能用2>&1复制stderr到stdout,在这种情况下,你会从test-output.log中看到stderr。

您要么必须牺牲test-output.log中的标准错误输出,要么运行两次go test,一次将标准输出和标准错误写入test-output.log,一次通过gojunit管道。

可以分两步完成

go test -v -covermode=count -coverprofile=coverage.txt ./...  2>&1 | tee coverage.out
go-junit-report < coverage.out > report.xml