Jacoco: Найти покрытие кода для внешних тестов - PullRequest
0 голосов
/ 02 мая 2018

Недавно я использовал плагин EclEmma в eclipse, чтобы найти покрытие кода JUnits в моем приложении, и оно прекрасно работало.

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

По сути, мы упаковываем наше приложение как jar (мы используем maven) и разворачиваем его на сервере. И мы можем запустить функциональные тесты в этом месте.

Есть ли способ найти покрытие кода в этом случае?

Мое понимание того, как работает инструмент покрытия кода (на необработанном языке), заключается в том, что он загружает классы и генерирует отчет на основе части кода, которая была поражена. Так что в соответствии с этим пониманием мне не нужно иметь доступ к тест-коду. Мне нужно только как-то подключить инструмент покрытия кода к моей фляге приложения, и всякий раз, когда вызывается какой-либо код в этой фляге, отчет будет обновляться. Правильно ли мое понимание?

Примечание: Я открыт для использования другого инструмента покрытия кода, если это возможно с другими инструментами.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Вот как я это сделал с Maven в конвейере Дженкинса

mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent test -Dmaven.test.failure.ignore=true 

Это создаст target/jacoco.exec с данными покрытия кода.

Очевидно, что мы не можем интерпретировать вывод, но инструменты и плагины, такие как SonarQube, могут это сделать. (В моем случае я использовал sonarqube)

Однако вы можете использовать ниже для генерации в формате html / csv, который будет расположен в target/site/jacoco/index.html, target/site/jacoco/jacoco.csv

mvn org.jacoco:jacoco-maven-plugin:report ИЛИ

java -jar jacococli.jar report jacoco.exec [options]

Кроме того, вы можете обратиться к этому учебнику , который сделал все это в pom.xml

0 голосов
/ 04 мая 2018

Вы можете запустить свой код на сервере, инструктируемом во время выполнения агентом JaCoCo, добавив агент в командную строку Java. Например, если ваш процесс запущен с:

java -jar myApp.jar

Вы можете изменить его на

java -jar myApp.jar -javaagent:/some/path/jacocoagent.jar

По умолчанию это записывает данные покрытия в файл jacoco.exec после завершения работы виртуальной машины, но вы можете переопределить это с помощью опций, позволяющих получать данные покрытия по TCP / IP. См. JaCoCo Agent документы .

Вы можете отформатировать это в отчете (например, HTML), используя:

java -jar jacococli.jar report jacoco.exec [options]

См. Параметры JaCoCo CLI .

... или вы можете использовать EclEmma для анализа вывода.

Если есть подлинные причины, по которым вы не можете использовать агент, в качестве крайней меры вы можете статически преобразовывать файлы классов в инструментированные файлы классов, используя команду instrument в jacocococli. Информацию об этом см. В JaCoCo 'Offline Instrumentation' документации .

Непосредственный вызов агента и использование jacococli.jar - самые основные способы использования JaCoCo. Поскольку вы используете Maven, вы можете получить многие из тех же эффектов, используя плагин JaCoCo Maven.

...