我的问题是我想从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