Я пытаюсь получить результаты тестов для тестов Flutter Unit, используя junit, через этап конвейера GitLab, однако продолжаю получать ошибку:
нет соответствующих файлов. Убедитесь, что путь артефакта указан относительно рабочий каталог
Я не уверен, что 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: Считайте свой рабочий каталог своим репозиторием (они не одинаковы, но очень похожи друг на друга). Для путей артефактов убедитесь, что вы используете относительные пути (пути, аналогичные тем, которые есть в вашем репозитории).
Как упоминалось в документации Gitlab:
Ключевое слово paths определяет, какие файлы следует добавить в артефакты задания. Все пути к файлам и каталогам указаны относительно репозитория, в котором было создано задание.
Как упоминалось выше, путь должен быть относительным. Другими словами, он должен быть дочерним элементом каталога проекта $CI_PROJECT_DIR/ .
Например, вы можете изменить выходной путь, добавив предопределенную переменную $CI_PROJECT_DIR (или использовать любой другой путь в рабочем каталоге):
- 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 также должен быть относительным.
Сделаем шаг назад, с помощью ls посмотрим, что к чему, и путь в переменных COVERAGE_RESULTS_PATH и UNIT_TESTS_PATH был неправильным, как вы и предлагали. Спасибо за помощь, теперь все исправлено. Я оставил все как есть '- flutter test --coverage --machine | tojunit --output report.xml' и просто исправил пути