Jacoco單元測試配置和使用
阿新 • • 發佈:2018-12-31
最近專案在重構。對未來的規劃就是測試驅動開發。
先寫單元測試,再開發程式碼。以單元測試的結果來判斷程式碼實現的可用性。
因為大批量的補充之前的程式碼的單元測試,是一件產出大於收入的事情。
所以目前是在日常的需求周迭代中,補充了每次改動部分的單元測試。
為了客觀展示單元測試補充情況,決定接入jacoco展示覆蓋情況。
一.自己用maven搭建了一個springboot專案
見之前的部落格:https://blog.csdn.net/third_/article/details/83659658
二.修改專案的pom.xml檔案。增加對jacoco的依賴。
增加如下配置:
include部分表示檢視單元測試覆蓋的範圍。
<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <configuration> <!--<includes>--> <!--<include>**/service/*</include> <!– 此處表示只測service層 –>--> <!--</includes>--> </configuration> <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> <outputDirectory>target/jacoco-ut</outputDirectory> </configuration> </execution> </executions> </plugin>
<jacoco.version>0.7.5.201505241946</jacoco.version>
<junit.version>4.12</junit.version>
完整的pom檔案如下:
<?xml version="1.0" encoding="UTF-8"?> <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.kimtian</groupId> <artifactId>springboot</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>springboot</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <jacoco.version>0.7.5.201505241946</jacoco.version> <junit.version>4.12</junit.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.0</version> </dependency> </dependencies> <build> <defaultGoal>compile</defaultGoal> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.1</version> <configuration> <skipMain>true</skipMain> <skip>true</skip> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>${jacoco.version}</version> <configuration> <!--<includes>--> <!--<include>**/service/*</include> <!– 此處表示只測service層 –>--> <!--</includes>--> </configuration> <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> <outputDirectory>target/jacoco-ut</outputDirectory> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
執行maven test。則在target檔案下生成jacoco-ut資料夾,在資料夾下可以看到index.html檔案。用瀏覽器開啟就是單元覆蓋率報告。
瀏覽器開啟的單元測試覆蓋率報告:
我最開始一直未找到這個單元測試報告,在pom.xml配置中一定要加report部分的依賴,並指定report的位置。
另外要執行的是maven test。
執行方式可以選擇package右鍵Run maven build。
注意:一定要BUILD SUCCESS成功。