как заставить jacoco добавить сами файлы тестов в отчет о покрытии - PullRequest
0 голосов
/ 19 июня 2019

В моем примере проекта Maven у меня есть такая конфигурация jacoco:

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.8.4</version>
  <executions>
    <execution>
      <id>jacoco-initialize</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>jacoco-report</id>
      <phase>test</phase>
      <goals>
        <goal>report</goal>
      </goals>
    </execution>
  </executions>
</plugin>

, которую я получил от https://automationrhapsody.com/automated-code-coverage-of-unit-tests-with-jacoco-and-maven/ (а затем изменил на самую новую версию)

Itотлично работает для покрытия реализации (src / main), но не дает мне никакой информации о покрытии для самих тестов (src / test)

Хотя я согласен, что это разумное значение по умолчанию, я быЯ хотел бы изменить его в одном из моих проектов, чтобы рассказать мне информацию о покрытии для тестов.Кто-нибудь знает как?

У меня есть полный пример здесь.https://github.com/alex028502/jacoco-example

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Согласно https://github.com/jacoco/jacoco/issues/271, на сегодняшний день эта функция не предоставляется jacoco-maven-plugin, однако один из комментариев в этом билете также гласит

возможно создать отчет для тестовых источников с помощью задач Ant через maven-antrun-plugin

Например

            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-antrun-plugin</artifactId>
              <version>1.8</version>
              <dependencies>
                <dependency>
                  <groupId>org.jacoco</groupId>
                  <artifactId>org.jacoco.ant</artifactId>
                  <classifier>nodeps</classifier>
                  <version>0.8.4</version>
                </dependency>
              </dependencies>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>run</goal>
                  </goals>
                  <configuration>
                    <target>
                      <typedef resource="org/jacoco/ant/antlib.xml"/>
                      <report>
                        <executiondata>
                          <fileset dir="target" includes="jacoco.exec"/>
                        </executiondata>
                        <structure name="Coverage Report">
                          <classfiles>
                            <fileset dir="${basedir}/target/test-classes"/>
                          </classfiles>
                          <sourcefiles>
                            <fileset dir="${basedir}/src/test/java"/>
                          </sourcefiles>
                        </structure>
                        <html destdir="${basedir}/target/coverage-report/html"/>
                      </report>
                    </target>
                  </configuration>
                </execution>
              </executions>
            </plugin>

генерирует следующий отчет для вашего теста

report

0 голосов
/ 19 июня 2019

Кроме того, мы можем добавить в плагин jacoco, какое минимальное покрытие мы хотим в нашем проекте, используя лимит и счетчик, или сколько максимальных классов мы можем пропустить.

следуйте примеру плагина:

          <plugin>
                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <executions>
                    <execution>
                        <id>default-check</id>
                        <configuration>
                            <rules>
                                <rule>
                                    <element>BUNDLE</element>
                                    <limits>
                                        <limit>
                                            <counter>INSTRUCTION</counter>
                                            <value>COVEREDRATIO</value>
                                            <minimum>0</minimum>
                                        </limit>
                                        <limit>
                                            <counter>CLASS</counter>
                                            <value>MISSEDCOUNT</value>
                                            <maximum>50</maximum>
                                        </limit>
                                    </limits>
                                </rule>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
...