У меня есть проект Java, который состоит из множества модулей maven и значительного количества модульных / интеграционных тестов. Проект настроен на создание отчетов об испытаниях через плагин surefire. Теперь этот плагин в основном создает XML-отчет для каждого тестового класса, его запуск запланирован один раз в день и выполняется на Jenkins.
Я хочу отправить эти XML-отчеты в систему управления тестированием (XRAY), чтобы сделать их более заметными и управляемыми. Мой (наивный) подход заключался бы в том, чтобы просто добавить сценарий пост-сборки на Jenkins и отправить эти отчеты через curl в REST-API управления тестами. Этот API позволяет отправлять по одному файлу отчета за раз. Этот файл отчета может быть как одиночным, так и вложенным, то есть я могу отправить оба следующих файла, и он работает:
Единый отчет
<testsuite>
...
</testsuite>
Агрегированный отчет
<testsuites>
<testsuite ... />
<testsuite ... />
</testsuites>
REST-API может обрабатывать оба, то есть Схема IBM JUnit и стандартный надежная схема
Теперь к проблеме; Я, очевидно, хочу объединить эти отчеты в один, чтобы избежать необходимости делать миллиард запросов к REST-API. Однако я не могу найти автоматический способ. То, что я пробовал до сих пор,
Единственный другой способ, который я могу придумать, - это написать сам «сценарий слияния», возможно, используя какое-то XSLT-преобразование. Но я бы предпочел этого не делать. Любая помощь очень ценится, спасибо!




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