Какие современные инструменты покрытия кода для Java могут показать покрытие с точки зрения тестирования? - PullRequest
0 голосов
/ 13 апреля 2020

Существует много инструментов покрытия кода, которые подошли к концу, что затрудняет поиск инструментов. Мне интересно, есть ли у кого-нибудь опыт работы с инструментом, который может отображать покрытие кода с точки зрения тестирования для проектов Maven в Java.

Примерно так:

Test: myTest 
Coverage:covers 30 % of source code.

и экспортируйте этот результат в XML или JSON.

Пример с Jacoco. Из информации, написанной @ cesarsotovalero

Запустите один метод теста с помощью

mvn clean verify -Dtest=yourTestClass#yourTestMethod

Или запустить тестовый класс с помощью

mvn clean verify -Dtest=yourTestClass

Или запустить весь набор тестов с помощью

mvn clean test

Имя теста / с теперь будет существовать в \target\surefire-reports\TEST-yourTest.xml Результаты покрытия будут в \target\site\jacoco\jacoco.xml

Теперь вы можете прочитать названия тестов и сопоставить их с результатами тестов. Внизу XML в \target\site\jacoco\jacoco.xml имеется сводная информация:

<counter covered="10" missed="19" type="INSTRUCTION"/>

<counter covered="3" missed="5" type="LINE"/>

<counter covered="3" missed="2" type="COMPLEXITY"/>

<counter covered="3" missed="2" type="METHOD"/>

<counter covered="2" missed="0" type="CLASS"/>

Тестовое покрытие для теста в \target\surefire-reports\TEST-yourTest.xml составляет 3 / (3 + 5) = 37,5%

1 Ответ

0 голосов
/ 13 апреля 2020

JaCoCo делает именно то, что вы просите. Добавьте его в качестве плагина в файл pom.xml вашего проекта Maven следующим образом:

<build>
      <plugins>
         <!-- JaCoCo plugin-->
         <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.5</version>
            <executions>
               <execution>
                  <goals>
                     <goal>prepare-agent</goal>
                  </goals>
               </execution>
               <execution>
                  <id>report</id>
                  <phase>prepare-package</phase>
                  <goals>
                     <goal>report</goal>
                  </goals>
               </execution>
            </executions>
         </plugin>
      </plugins>
</build>

Чтобы получить% охвата одного теста, выполните:

mvn clean verify -Dtest=myTestClass#myTestMethod

результаты покрытия будут экспортированы в ./target/site/jacoco/jacoco.xml. Кроме того, на ./target/site/jacoco/index.html будет сгенерирован красивый отчет HTML.

Вы можете проанализировать файл jacoco.xml, чтобы получить охват теста по тестируемому классу: (lines missing + lines covered) / lines covered.

...