Запуск отчета jacoco, где интеграционные тесты находятся в одной кодовой базе, а исходный код - в другой кодовой базе - PullRequest
0 голосов
/ 07 июня 2018

Я недавно начал работать над созданием отчетов jacoco для maven проектов, включая модульные и интеграционные тесты, и они, кажется, работают правильно.Теперь я столкнулся с другим сценарием, который я не уверен, как подойти.У меня есть одно рабочее пространство, которое состоит из тестовых примеров интеграции - приложение A, но исходный код не существует в той же самой рабочей области / базе кода.Исходный код, который фактически запускается при вызове этих сценариев интеграционного теста, находится в другом рабочем пространстве / базе кода - приложении B (они вызываются с помощью вызовов rest api с URL-адресами localhost. Сервер jboss запускается для приложения B, так что контекст localhostвверх) из интеграционных тестов.Цель состоит в том, чтобы вызвать эти интеграционные тесты из приложения A, которое, в свою очередь, вызывает исходный код этих тестов в приложении B, генерируя отчет jacoco о покрытии кода для приложения B. На самом деле я не уверен, как этого добиться.Может ли кто-нибудь предоставить какой-либо вклад.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Если я вас правильно понимаю, у вас на самом деле есть 2 разных процесса в вашем сценарии:

  • "Клиентский" процесс, который запускает интеграционные тесты и для которого легко может быть применен jacoco,но это не то, что вам нужно

  • Процесс "сервер", который запускает реальный сервер JBoss и выполняет фактический код.

Контакты процесса клиентасервер через HTTP.

В этом случае, я боюсь, jacoco не сможет предоставить вам покрытие , если вы запускаете тесты из maven / gradle , потому что инструменты jacoco включают только байт-кодбегущая JVM.Так что вы должны быть «креативными» здесь:)

Я перечислю здесь некоторые возможные подходы Отказ от ответственности: Я не пробовал их (хотя не работал с jboss / java ee), но, возможно, вам удастся хотя бы позаимствовать некоторые идеи

Первый подход - это запуск тестов вместе с приложением, как это делается, например, в весенних тестах (Я не уверен, предоставляет ли JBoss аналогичные возможности).

Идея проста:

  • Вы запускаете интеграционный тест, он запускает jboss, "встроенный в тот же jvm", ивы можете ввести в тест сессионные EJB-компоненты / EJB-компоненты (например, автоматическую разводку с пружиной).

Преимущество такого метода в том, что вы сможете просто использовать плагин jacoco maven, и он будет все для вас использовать

Я не знаю, насколько легко это будетТехнически достигнув этой архитектуры, я знаю, что последние версии jboss поддерживают встроенный режим, поэтому, возможно, вы найдете эту ссылку полезной основой

Другое направление заключается ввзгляните на проект Arquillian .У них есть какое-то расширение jacoco, которое, вероятно, поможет, но я никогда не пробовал его.

И последний подход , который я могу придумать, - это запустить сервер jboss с агентом jacoco напрямую, а не полагаться на него.в системе сборки, которая запускает для вас jacoco.

Идея состоит в том, чтобы передать результаты покрытого серверного кода в некоторую конечную точку файла / tcp.Таким образом, вы запускаете jboss с -javaagent:[yourpath/]jacocoagent.jar, и он начинает потоковую передачу результатов туда, где вам это нужно для потоковой передачи.После тестов вы должны собрать эти результаты и подготовить отчет.Вы можете найти Здесь Более подробную информацию об этом подходе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...