0

我使用 Shippable 作为我的 CI,我的项目基于 Go 1.11。所有的单元测试都是使用 Ginkgo 和 Gomega 以 BDD 风格编写的。在我的测试管道中,我有类似的东西:

gocov test ./... | gocov-xml > shippable/codecoverage/coverage.xml
go test -v ./... | go-junit-report > shippable/testresults/junitresults.xml

这将创建 Cobertura 格式的覆盖文件和 JUnit 格式的单元测试报告。

在我的项目中,我们有多个测试套件。我打算使用 Ginkgo CLI 来执行覆盖和单元测试,而gocov不是go test. 就像是:

ginkgo -r -cover -outputdir=./shippable/codecoverage/ -coverprofile=coverage.txt
ginkgo -r -focus="\[Unit\]" -outputdir=./shippable/testresults/ -coverprofile=unit.txt

现在的问题是我无法将coverage.txt 文件转换为等效的Cobertura 格式XML 文件(可交付需要)和unit.txt 文件到等效的JUnit XML 文件。

我已经看到如何从测试套件生成 JUnit 文件,但在我的项目中,我们有多个测试套件,这将导致多个 JUnit 文件,这是我不想要的。

任何想法,我怎样才能转换和使用它们?

4

1 回答 1

0

要创建 Cobertura 格式:

没关系,自己想通了。

使用设置的covermode生成封面

ginkgo -r -cover -covermode=set -outputdir=shippable/codecoverage/ -coverprofile=coverage.out

现在,我们需要删除重复的条目mode: set

awk '!seen[$0]++' shippable/codecoverage/coverage.out > shippable/codecoverage/coverage-fix.out

最后,转换为 Cobertura

bash gocov convert shippable/codecoverage/coverage-fix.out | gocov-xml > shippable/codecoverage/coverage.xml

于 2018-12-11T11:22:53.970 回答