Частое развертывание – это огромный шаг в архитектуре Микросервисов . Если у вас есть набор тестов, которые выполняются перед каждым развертыванием и ставят зеленую галочку для надежного развертывания. Должен ли я доверять автоматическим тестам или нет? один из способов принять решение – проверить покрытие кода. Jacoco помогает получить подробную информацию о покрытии кода.
Jacoco – это библиотека java, которую вы можете использовать в своем приложении, чтобы получить подробную информацию о покрытии кода. Агент Jacoco устанавливается на вашу виртуальную машину, и этот агент прослушивает показатели jmx и выдает сведения о покрытии. Результатом может быть файл или сокет. Мы можем настроить путь к файлу, и когда jvm запускается, он блокирует файл, а когда jvm останавливает его, записывает данные выполнения в файл Мы можем настроить путь к файлу, и когда jvm запускается, он блокирует файл, а когда jvm останавливает его, записывает данные выполнения в файл
. Мы можем передать этот файл для статического анализа кода, такого как Sonar, и он отобразит результаты, или использовать плагин jacoco reports для создания отчетов. Мы можем передать этот файл для статического анализа кода, такого как Sonar, и он отобразит результаты, или использовать плагин jacoco reports для создания отчетов.
На приведенной выше диаграмме показаны следующие шаги
1) Дженкинс работает на виртуальной машине, которая имеет свою собственную jvm JVM-A
, которая создает приложение и развертывает его в контейнере на удаленном хосте.
2) Как только приложение будет запущено в контейнере на виртуальной машине с jvm JVM-B
, где необходимо установить и настроить агент jacoco. Агент Jacoco на JVM-B
выдает данные выполнения в файл (jacoco.exec)
в соответствии с настройками.
3) Буквально шагом 3 может быть все, что понимает файл, созданный на шаге 2, и генерирует отчеты. Sonar делает это, если мы указываем путь к файлу. В Maven есть плагин jacoco:report
, который понимает файл jacoco.exec и генерирует несколько приятных отчетов пользовательского интерфейса.
Как это сделать
У меня есть пример
БхаргавМодепалли/Весенние ботинки-jacoco- Пример
ПОЛУЧИТЬ http://localhost:8080/today дает сегодняшнюю дату
Следующий https://www.jacoco.org/jacoco/trunk/doc/agent.html чтобы настроить покрытие кода jacoco для записи в файл
сборка https://github.com/jacoco/jacoco/tree/master/org.jacoco.agent чтобы получить
сборка
https://github.com/jacoco/jacoco/tree/master/org.jacoco.agent
Сгенерируйте файл данных выполнения
java:\Workspace\Github\Spring-Boot-Jacoco-Example\target\jacoco.exec -jar Spring-Boot-Jacoco-Example-0.0.1-SNAPSHOT.jar
javaagent: C:\Bhargav\jacocoagent.jar: указывает на место, где находится jar jacocoagent.
добавить: указание агенту jacoco добавлять ли новые показатели к старым показателям, если есть какие-либо старые показатели
include: * означает, что включает все классы, мы можем ограничить их определенным пакетом
вывод: указание агенту jacoco, куда вы хотите записать данные выполнения, в данном случае мы говорим агенту jacoco записать их в файл.
destfile: расположение файла, в который агент jacoco записывает данные выполнения
Следующий файл будет сгенерирован по заданному пути к файлу destfile приведенной выше команды.
Создание отчетов из файла данных выполнения
Чтобы сделать этот файл читаемым, мы можем использовать плагин maven с именем jacoco-maven-plugin
<плагин> <Идентификатор группы>org.jacoco группы> группы> jacoco-maven-плагин <версия>0.8.3 <казни> <казнь> <цели> <цель>отчет <конфигурация> <Файл данных>${project.build.directory}/jacoco.exec данных> данных> ${basedir}/target/jacoco
запускаем его из cmd
mvn org.jacoco:jacoco-maven-plugin:0.8.3:отчет
Оригинал: “https://dev.to/bhargavm/microservices-code-coverage-with-jacoco-4a36”