我正在尝试通过 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 正在生成报告,如果是,如何找到正确的路径?
如错误消息中所述
确保工件路径相对于工作目录
让我们分解一下 ...
paths
:此关键字仅用于确定要包含在作业工件中的文件。
working directory
:将您的工作目录视为您(它们并不相同,但彼此非常相似。对于 artifacts 路径,请确保您使用的是 相对路径(与存储库中的路径类似的路径)
如Gitlab 文档中所述:
paths 关键字决定将哪些文件添加到作业工件中。文件和目录的所有路径都相对于创建作业的存储库。
如上所述,路径必须是相对的。换句话说,它应该是项目目录的子目录
$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也应该是相对的。