我如何使jacoco将测试文件本身添加到覆盖率报告中

时间:2019-06-19 09:44:16

标签: java maven code-coverage jacoco jacoco-maven-plugin

在我的示例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/获得的

(然后更改为最新版本)

它对实现的覆盖范围(src / main)很有用,但是并没有为我提供测试本身的覆盖范围信息(src / test)

尽管我同意这是一个明智的默认设置,但我还是想将其更改为我的一个项目,以便告诉我测试的覆盖率信息。有人知道吗?

我在这里有一个完整的例子。 https://github.com/alex028502/jacoco-example

2 个答案:

答案 0 :(得分:0)

此外,我们可以在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>

答案 1 :(得分:0)

根据https://github.com/jacoco/jacoco/issues/271的规定,jacoco-maven-plugin尚未提供此功能,但是one of comments in this ticket also states

  

可以通过maven-antrun-plugin使用Ant任务为测试源生成报告

例如

            <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