0

基于 StackOverflow 上的这个问题,我将测试覆盖率添加到我的 Gitlab CI/CD YAML 文件中,我希望结果会上传到 codeclimate。

- go get github.com/axw/gocov/gocov
- export CC_TEST_REPORTER_ID=My_REPO_ID
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
- chmod +x ./cc-test-reporter
- ./cc-test-reporter before-build
- gocov test -v ./... -coverprofile=out
- ./cc-test-reporter format-coverage --input-type gocov out
- ./cc-test-reporter upload-coverage

该脚本在我的所有包中成功运行测试,CI/CD 的输出显示不同包中的所有测试都运行了,但上传到 codeclimate 的报告仅显示只有一个文件具有测试覆盖率,即最后一个测试包,而不是全部显示。

代码气候结果报告页面

4

1 回答 1

0

我将解决方案与同一个 stackoverflow 链接中的另一个答案混合在一起,最后创建了一个 bash 文件并像这样从我的 yaml 文件中运行它,因此报告输出包含所有包报告,这是我的脚本:

go get github.com/axw/gocov/gocov
export CC_TEST_REPORTER_ID=My_ID
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
chmod +x ./cc-test-reporter
./cc-test-reporter before-build

for pkg in $(go list ./... | grep -v vendor); do
    go test -coverprofile=$(echo $pkg | tr / -).cover $pkg
done
echo "mode: set" > c.out
grep -h -v "^mode:" ./*.cover >> c.out
rm -f *.cover

./cc-test-reporter after-build
于 2020-08-25T15:16:02.480 回答