Arquillian Tomee дистанционное покрытие кода Jacoco

exampleLabel.text = String(yourInt)

1
задан Gnana 17 January 2019 в 16:10
поделиться

3 ответа

Я добавил надлежащий java-агент (surefireArgLine) на удаленный сервер TomEE через catalina, включающий плагин surefire. это работает.

surefireArgLine - будет заполнен подготовительным агентом Surefire во время выполнения.

<tomee.catalina_opts> ${surefireArgLine}</tomee.catalina_opts>
0
ответ дан Gnana 17 January 2019 в 16:10
поделиться

Отказ от ответственности: я не эксперт ни по Arquillian, ни по TomEE, поэтому вы можете подстроить ответ под свои цели.

В любом случае, в двух словах, байт-код инструментов JaCoCo для предоставления отчета о покрытии.

Поскольку при использовании Arquillian фактическое выполнение теста происходит в JVM TomEE, а не в JVM, которая фактически выполняет набор тестов (возможно, CI-сервер или просто скрипт сборки, выполняющий тест), поэтому настройте JaCoCo на этом тестовая машина не сделает много, вам придется настроить сам сервер.

JaCoCo имеет опцию -javaagent для этого, и этот Java-агент будет «перехватывать» загрузку классов сервером и обрабатывать их.

Теперь, когда JaCoCo работает, он создает файл jacoco.exec, который на самом деле содержит отчет о покрытии, который может быть показан позже различными способами (плагин jenkins для отображения покрытия, интеграция с гидролокатором, что угодно). И это, безусловно, наиболее часто используемая опция AFAIK, поэтому, если вы будете использовать этот подход, учитывая, что инструментарий действительно работает, после завершения тестов вам нужно будет найти сервер на тестовом компьютере и загрузить его на компьютер сборки. и интегрироваться с CI / Sonar как угодно.

Однако есть альтернативные решения:

Документация JaCoCo утверждает, что существует три режима запуска инструментирующего Java-агента:

  • Файловая система: At Данные выполнения завершения JVM записываются в локальный файл.
  • Сервер сокетов TCP: внешние инструменты могут подключаться к JVM и извлекать данные о выполнении через соединение через сокет. Возможен сброс данных выполнения и сброс данных выполнения при выходе из ВМ.
  • TCP Socket Client: при запуске агент JaCoCo подключается к определенной конечной точке TCP. Данные исполнения записываются в сокетное соединение по запросу. Возможен сброс данных выполнения и сброс данных выполнения при выходе из ВМ.

Технически вы можете просто указать разные параметры для этого javaagent, чтобы он запускал JaCoCo в одном из этих режимов.

В любом случае, мы обсудили первый вариант, но вы также можете работать с конфигурациями TCP, если это необходимо. Конечно, здесь вам придется решать проблемы безопасности (например, разрешение на доступ / доступ к порту и т. Д.).

Если вы работаете в режиме TCP, есть Плагин Maven , который может пригодиться. Я не использовал его сам, просто погуглил, поэтому не могу комментировать, хорошо ли это, у него всего 2 звезды на Github, так что, вероятно, он не готов к производству, но, возможно, вы могли бы получить некоторые идеи из его исходного кода. [1116 ]

0
ответ дан Godin 17 January 2019 в 16:10
поделиться

Вы можете установить catalina_opts в arquillian.xml для контейнера tomee. Отфильтруйте его с помощью Maven, чтобы передать jacoco javaagent, и все готово:).

0
ответ дан Romain Manni-Bucau 17 January 2019 в 16:10
поделиться