【问题标题】:Publish .NET 6 test coverage - GitLab CI发布 .NET 6 测试覆盖率 - GitLab CI
【发布时间】:2022-06-11 01:56:38
【问题描述】:

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

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

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

#!/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。但是我报错了

./scripts/print-dotnet-coverage.sh: 12: bc: not found

有谁知道如何修复此错误或如何实现我的目的 - 在 GitLab CI 中将覆盖率乘以 100 - 不使用 bc?

谢谢!

【问题讨论】:

标签: .net shell gitlab-ci test-coverage


【解决方案1】:

请参阅以下示例项目以设置代码覆盖率报告:dotnet-example

【讨论】:

    猜你喜欢
    • 2017-06-26
    • 2022-11-10
    • 1970-01-01
    • 2021-07-09
    • 2020-09-19
    • 2022-10-13
    • 2018-01-13
    • 2014-12-15
    • 2023-03-31
    相关资源
    最近更新 更多