基础概念
行覆盖率:度量被测程序的每行代码是否被执行,判断标准行中是否至少有一个指令被执行。
类覆盖率:度量计算class类文件是否被执行。
分支覆盖率:度量if和switch语句的分支覆盖情况,计算一个方法里面的总分支数,确定执行和不执行的 分支数量。
方法覆盖率:度量被测程序的方法执行情况,是否执行取决于方法中是否有至少一个指令被执行。
指令覆盖:计数单元是单个java二进制代码指令,指令覆盖率提供了代码是否被执行的信息,度量完全 独立源码格式。
圈复杂度:在(线性)组合中,计算在一个方法里面所有可能路径的最小数目,缺失的复杂度同样表示测 试案例没有完全覆盖到这个模块。
https://www.jianshu.com/p/639e51c76544
解决方案
JaCoCo version 0.7.7 implemented a new maven goal jacoco:report-aggregate
.
https://www.eclemma.org/jacoco/trunk/doc/report-aggregate-mojo.html
需要额外添加一个子工程『cov』,该工程只有pom文件,文件中引用所有的subProject,并进行jacoco相应的配置(主要是outputDirectory目录)。
编译命令 mvn verify -Pjacoco
<parent>
<artifactId>parentProject</artifactId>
<groupId>com.jacoco.multimodule.test</groupId>
<version>${parent-version}</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.jacoco.multimodule.test</groupId>
<artifactId>cov</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
<profiles>
<profile>
<id>jacoco</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<executions>
<execution>
<id>default</id>
<phase>verify</phase>
<goals>
<goal>report-aggregate</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/../target/site/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<!-- add project module info as below -->
<dependencies>
<dependency>
<groupId>com.jacoco.multimodule.test</groupId>
<artifactId>subProject1</artifactId>
</dependency>
<dependency>
<groupId>com.jacoco.multimodule.test</groupId>
<artifactId>subProject2</artifactId>
</dependency>
</dependencies>
</project>