与Jenkins进行覆盖报告集成

J F*_*ird 6 go jenkins

我想知道是否有任何工具可以转换go test -coverprofile=cover.out为Jenkins可以接受的格式?我发现了一些工具,例如go-junit-report和go2xunit,但它们实际上只是转换来自的输出go test -v,而不是覆盖率报告。

我想直接了解Jenkins的详细测试范围。基本上,我希望看到的输出go tool cover -func=cover.out,并go tool cover -html=cover.out在詹金斯网页。

Wil*_*hes 6

有几个去的工具从转换覆盖数据go test到的Cobertura詹金斯:gocover-的Cobertura,或gocov与gocov的XML。

您可以使用gocover-cobertura以下方法:

$ go get github.com/t-yuki/gocover-cobertura

$ go test -coverprofile=cover.out example.com/demo/...
ok      example.com/demo    0.008s  coverage: 0.0% of statements
ok      example.com/demo/cmd/demo   0.020s  coverage: 23.4% of statements

$ gocover-cobertura < cover.out > coverage.xml

$ head coverage.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0.35415787" branch-rate="0" version="" timestamp="1520609235359" lines-covered="839" lines-valid="2369" branches-covered="0" branches-valid="0" complexity="0">
        <sources>
                <source>/usr/local/go/src</source>
                <source>/Users/wilfred/workspace/go-scratch/src</source>
        </sources>
        <packages>
                <package name="example.com/demo/cmd/demo" line-rate="0.4848485" branch-rate="0" complexity="0">
                        <classes>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要Go 1.10+才能一次运行-coverprofile多个软件包。


J F*_*ird 3

https://github.com/AlekSi/gocov-xml

这就是我们所需要的。使用 Coberuta 插件生成覆盖率配置文件。