Junit, похоже, не генерирует отчет о результатах теста (Flutter, GitLab)

Я пытаюсь получить результаты тестов для тестов 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 создает отчет, и если да, то как мне найти правильный путь?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
141
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В сообщении об ошибке упоминается, что вам необходимо:

Убедитесь, что путь артефакта указан относительно рабочего каталога.

давайте разберем это...

  1. Ключевое слово paths и рабочий каталог:
  • paths: Это ключевое слово используется только для определения того, какие файлы следует включить в артефакты задания.

  • working directory: Считайте свой рабочий каталог своим репозиторием (они не одинаковы, но очень похожи друг на друга). Для путей артефактов убедитесь, что вы используете относительные пути (пути, аналогичные тем, которые есть в вашем репозитории).

Как упоминалось в документации Gitlab:

Ключевое слово paths определяет, какие файлы следует добавить в артефакты задания. Все пути к файлам и каталогам указаны относительно репозитория, в котором было создано задание.

  1. Решение проблемы (вероятно, один из способов сделать это):

Как упоминалось выше, путь должен быть относительным. Другими словами, он должен быть дочерним элементом каталога проекта $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' и просто исправил пути

dogowar 14.03.2024 00:07

Другие вопросы по теме