Отказ от ответственности: я не эксперт ни по Arquillian, ни по TomEE, поэтому вы можете изменить ответ для своих целей.
В любом случае, в двух словах, байт-код инструментов JaCoCo для предоставления отчета о покрытии.
Поскольку при использовании Arquillian фактическое выполнение теста происходит в JVM TomEE, а не в JVM, которая фактически выполняет набор тестов (возможно, CI-сервер или просто скрипт сборки, выполняющий тест), поэтому настройте JaCoCo на этом тестовая машина не сделает много, вам придется настроить сам сервер.
JaCoCo имеет опцию -javaagent
для этого, и этот Java-агент будет "перехватывать" загрузку классов сервером и инструктировать их.
Теперь, когда JaCoCo работает, он создает файл jacoco.exec
, который на самом деле содержит отчет о покрытии, который может быть показан позже различными способами (плагин jenkins для отображения покрытия, интеграция с гидролокатором).
И это, безусловно, наиболее часто используемая опция AFAIK, поэтому, если вы будете использовать этот подход, учитывая, что инструментарий действительно работает, после того, как тесты будут выполнены, вам нужно будет найти сервер на тестовом компьютере и загрузить его на компьютер сборки. и интегрируйся с CI / Sonar как угодно.
Однако есть альтернативные решения:
Документация JaCoCo гласит, что существует три режима запуска инструментирующего Java-агента:
- Файловая система: при завершении завершения JVM данные записываются в локальный файл.
- TCP Socket Server: внешние инструменты могут подключаться к JVM и получать данные о выполнении через сокетное соединение. Возможен сброс данных выполнения и сброс данных выполнения при выходе из ВМ.
- TCP Socket Client: при запуске агент JaCoCo подключается к определенной конечной точке TCP. Данные исполнения записываются в сокет соединения по запросу. Возможен сброс данных выполнения и сброс данных выполнения при выходе из ВМ.
Технически вы можете просто указать разные параметры для этого javaagent, чтобы он запускал JaCoCo в одном из этих режимов.
В любом случае, мы обсудили первый вариант, но вы также можете работать с конфигурациями TCP, если это необходимо. Конечно, здесь вам придется решать проблемы безопасности (например, разрешение на доступ / доступ к порту и т. Д.).
Если вы работаете в режиме TCP, вам может пригодиться Maven Plugin . Я не использовал его сам, просто погуглил, поэтому не могу комментировать, хорошо ли это, у него всего 2 звезды на Github, так что, вероятно, он не готов к производству, но, возможно, вы могли бы получить некоторые идеи из его исходного кода.