在课堂上看到老师使用jacoco进行测试代码覆盖率的检测,很多上这门课的同学可能不太熟悉,因此做一个比较简单的教程。 在此之前需要下载maven的jar包,由于IDEA自带的maven有缺陷,所以我们这里不用。 maven下载链接:https://mvnrepository.com/artifact/org.apache.maven/maven-plugin-api 下载完成以后开始配置环境变量,这里可以参考: https://blog.csdn.net/love_caicai/article/details/82228985 配置完成环境变量以后可以通过控制台中输入 mvn -v 如果如下所示则说明配置成功(此处以mac为例) 一、将IDEA中的Maven替换成我们下载的maven 1、IDEA中 file(mac中是Preference)->settings->Build,Excution,Deployment->Build Tools->Maven Maven Home directory: Maven 的安装目录 User Settings File: maven安装目录下的conf/setting.xml文件 Local Repository: 本地仓库的目录位置(自己在本地新建一个即可)
2、Build Tools->Maven->Runner VM Options: archetypeCatalog=internal JRE:对应项目所使用的jdk
二、 第一次创建maven项目的时候可能需要下载很多内容,所以需要一定时间的等待。
1、首先需要创建一个maven项目 记得在这里要把 Create from archetype 勾选上,才可以使用下面的模版进行创建,一般使用quickstart即可
2、配置文件路径 home path指向所下载的maven包 User setting 指向maven包中的conf文件夹下的settings.xml文件 Local repository 指向本地仓库,可以自己创建一个文件夹,名字叫做localRepository。
3、修改Maven配置文件 打开maven->conf->settings.xml文件。 在标签中添加 本地仓库的绝对路径 4、修改Maven的pom.xml文件 创建成功以后,项目中应该会如下图所示出现这些文件夹 点开其中的pom.xml文件 并用以下的内容完全替代
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test.jacoco</groupId>
<artifactId>testJacoco</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>JaCoCo Examples</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
<sonar.jacoco.itReportPath>${project.basedir}/target/jacoco.exec</sonar.jacoco.itReportPath>
<sonar.language>java</sonar.language>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.7.0</version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
5、将我们所需要测试的文件放入main与test的java文件夹下,org.example可以删除 注意:需要测试的方法需要按照junit的格式,使用@Test进行注释,并且方法的名称必须满足junit的命名格式 例如: public void testJacoco01(){}
6、完成测试文件以及所有相关java文件的导入之后,可以看到IDEA界面的最右侧有一个maven的标志: 点击此处的test,如果程序没有编译错误,此时在左侧的文件夹列表中会生成一个target文件夹
7、jacoco测试结果的文件位置为: target/site/jacoco/index.html
使用浏览器打开即可得到测试程序对于整体项目的覆盖率。 如有遇到问题欢迎留言讨论,谢谢大家。
**From USYD ErikZhang**
|