Объединение отчетов surefire JUnit

У меня есть проект Java, который состоит из множества модулей maven и значительного количества модульных / интеграционных тестов. Проект настроен на создание отчетов об испытаниях через плагин surefire. Теперь этот плагин в основном создает XML-отчет для каждого тестового класса, его запуск запланирован один раз в день и выполняется на Jenkins.

Я хочу отправить эти XML-отчеты в систему управления тестированием (XRAY), чтобы сделать их более заметными и управляемыми. Мой (наивный) подход заключался бы в том, чтобы просто добавить сценарий пост-сборки на Jenkins и отправить эти отчеты через curl в REST-API управления тестами. Этот API позволяет отправлять по одному файлу отчета за раз. Этот файл отчета может быть как одиночным, так и вложенным, то есть я могу отправить оба следующих файла, и он работает:

Единый отчет

  <testsuite>
  ...
  </testsuite>

Агрегированный отчет

  <testsuites>
    <testsuite ... />
    <testsuite ... />
  </testsuites>

REST-API может обрабатывать оба, то есть Схема IBM JUnit и стандартный надежная схема

Теперь к проблеме; Я, очевидно, хочу объединить эти отчеты в один, чтобы избежать необходимости делать миллиард запросов к REST-API. Однако я не могу найти автоматический способ. То, что я пробовал до сих пор,

  • поиграйте с плагин surefire, чтобы объединить отчеты XML, но подходящей опции, похоже, не существует
  • Организуйте тесты в набор тестов (JUnit), но на выходе останется XML-отчет для каждого теста.
  • найти альтернативные плагины / инструменты, которые решают эту проблему, не повезло

Единственный другой способ, который я могу придумать, - это написать сам «сценарий слияния», возможно, используя какое-то XSLT-преобразование. Но я бы предпочел этого не делать. Любая помощь очень ценится, спасибо!

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 370
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Решением было бы использовать для этого внешнюю утилиту, поскольку уверенность, похоже, ее не поддерживает. Я успешно использовал утилита junit-merge, который является пакетом NPM, как вы можете видеть, например, в этот учебник. Использование довольно простое; вам просто нужно указать выходной файл и входную папку, содержащую несколько отчетов на основе JUnit XML.

junit-merge  -o results.xml -d target/surefire-reports/

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