junit 似乎没有生成测试结果报告(Flutter、GitLab)

问题描述 投票:0回答:1

我正在尝试通过 GitLab 管道阶段使用 junit 为 Flutter 单元测试生成测试结果,但是我不断收到错误:

没有匹配的文件。确保工件路径是相对于 工作目录

我不相信 junit 正在生成测试报告,但我不确定如何确认这一点。覆盖范围也覆盖了。

Yaml文件如下:

.gitlab-ci.yml

webapp:unit-test:
  extends: .webapp:unit-test
  stage: test
  allow_failure: true
  only:
    changes:
      <removed>

flutterapp.gitlab-ci.yml

.webapp:unit-test: &webapp_unit-test
  image: $CI_REGISTRY_IMAGE/flutter:$CI_COMMIT_REF_NAME
  cache:
    paths:
  script:
    - cd $APP_DIR
    - flutter pub upgrade
    - flutter pub global activate junitreport
    - export PATH="$PATH":"$HOME/.pub-cache/bin"
    - flutter test --coverage --machine | tojunit --output report.xml
    - lcov --list coverage/lcov.info
    - genhtml coverage/lcov.info --output=coverage
  coverage: '/\s*lines\.*:\s*([\d\.]+%)/'
  artifacts:
    reports:
      junit:
        - $UNIT_TESTS_PATH/report.xml
    paths: 
      - $VARIABLES_FILE
      - $COVERAGE_RESULTS_PATH/coverage
      - $UNIT_TESTS_PATH/report.xml
    when: always
  allow_failure: true

如何确认 junit 正在生成报告,如果是,如何找到正确的路径?

flutter junit gitlab
1个回答
0
投票

如错误消息中所述

确保工件路径相对于工作目录

让我们分解一下 ...

  1. paths关键字和工作目录:
  • paths
    :此关键字仅用于确定要包含在作业工件中的文件。

  • working directory
    :将您的工作目录视为您repository(它们并不相同,但彼此非常相似。对于 artifacts 路径,请确保您使用的是 相对路径(与存储库中的路径类似的路径)

Gitlab 文档中所述:

paths 关键字决定将哪些文件添加到作业工件中。文件和目录的所有路径都相对于创建作业的存储库。

  1. 可能解决此问题的一种方法:

如上所述,路径必须是相对的。换句话说,它应该是项目目录的子目录

$CI_PROJECT_DIR/
.

  • 例如,您可以通过添加预定义变量$CI_PROJECT_DIR来更改输出路径(或使用工作目录中的任何其他路径) 确保您使用的是报告输出路径的 rgh):

      - flutter test --coverage --machine | tojunit --output $CI_PROJECT_DIR/report.xml
      - lcov --list coverage/lcov.info
      - genhtml coverage/lcov.info --output=$CI_PROJECT_DIR/coverage
    
  • 确保

    paths
    关键字下的所有文件路径都是相对的($CI_PROJECT_DIR/ 目录的子级):

      paths: 
          - $VARIABLES_FILE
          - $CI_PROJECT_DIR/coverage
          - $CI_PROJECT_DIR/report.xml
    

注意:$VARIABLES_FILE也应该是相对的。

© www.soinside.com 2019 - 2024. All rights reserved.