首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布.NET 6测试覆盖率- GitLab CI

发布.NET 6测试覆盖率- GitLab CI
EN

Stack Overflow用户
提问于 2022-06-10 10:38:54
回答 1查看 557关注 0票数 0

我正在为.NET 6项目在GitLab上建立一个管道。我运行测试,然后在coverage.cobertura.xml文件中生成代码覆盖率报告。下面是测试作业脚本:

代码语言:javascript
复制
test:
  only:
    - master
    - /^feature/.*$/
  stage: test
  dependencies:
    - build-application
  variables:
    CONFIGURATION: "Debug"
    COVERAGE_FLAG: "XPlat Code Coverage"
    LOGGER_FLAG: "junit;LogFilePath=$CI_PROJECT_DIR/junit/junit-test-result.xml;MethodFormat=Class;FailureBodyFormat=Verbose"
    TEST_PROJECTS: "./tests/*Tests/*.csproj"
  script:
    - 'dotnet test $TEST_PROJECTS
            -c $CONFIGURATION
            -r $CI_PROJECT_DIR/cobertura
            --collect:"$COVERAGE_FLAG"
            --test-adapter-path:.
            --logger:"$LOGGER_FLAG"'
    - chmod +x ./scripts/print-dotnet-coverage.sh
    - ./scripts/print-dotnet-coverage.sh $CI_PROJECT_DIR/cobertura
  coverage: /TOTAL_COVERAGE=(\d+.\d+)/
  artifacts:
    when: on_success
    paths:
      - $CI_PROJECT_DIR/cobertura/*/coverage.cobertura.xml
      - $CI_PROJECT_DIR/junit/junit-test-result.xml
    reports:
      coverage_report:
        coverage_format: cobertura
        path: $CI_PROJECT_DIR/cobertura/*/coverage.cobertura.xml
      junit:
        - $CI_PROJECT_DIR/junit/junit-test-result.xml

痛苦的是,test命令不会产生任何关于总覆盖率的输出,所以我从新创建的coverage.cobertura.xml文件中提取它,并使用下面的脚本将其打印到stdout

代码语言:javascript
复制
#!/usr/bin/env sh
REPORTS_DIR="${1}"
coverage=0
count=0
for i in $(find "$REPORTS_DIR" -name '*.xml');
do
    printf "Found coverage report: %s\n" "$i"
    coverage="$(xmllint --xpath 'string(/coverage/@line-rate)' ${i})"
    count=$((count + 1))
done;
printf "Found a total of %i report(s)\n" "$count"
coverage=$(echo "$coverage * 100" | bc) <-- error here
printf "TOTAL_COVERAGE=%2.4f\n" "$(echo "${coverage}")"

因为覆盖率是0.8875,所以我得把它乘以100。但我有个错误

代码语言:javascript
复制
./scripts/print-dotnet-coverage.sh: 12: bc: not found

有没有人知道如何修复这个错误,或者如何达到我的目标--在GitLab CI中将覆盖率乘以100 --而不使用bc?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 17:56:38

有关设置代码覆盖率报告的示例项目,请参见以下示例:dotnet-示例

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72572938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档