您好,登錄后才能下訂單哦!
怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
使用 Python + Coverage 來統(tǒng)計(jì)測試用例的代碼覆蓋率
Jacoco 針對(duì) Java 語言的一款開源的覆蓋率工具,可以嵌入到 Maven、Gradle 中,提供多種尺度的覆蓋率計(jì)數(shù)器,比如:類覆蓋、行覆蓋、分支覆蓋等
本篇將聊聊服務(wù)端代碼的覆蓋率統(tǒng)計(jì),以 Spring Boot 項(xiàng)目為例,使用 Jacoco + junit 來統(tǒng)計(jì)服務(wù)端的代碼覆蓋率
首先使用 IDEA 創(chuàng)建一個(gè) Spring Boot 項(xiàng)目( Maven ),以之前 構(gòu)建 RESTFul API 的項(xiàng)目 代碼為基礎(chǔ)
然后,配置 pom.xml 文件,為當(dāng)前項(xiàng)目新增 jacoco 依賴 JAR 包
<!--pom.xml-->
<!--jacoco依賴-->
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
</dependency>
jacoco 版本可以參考:
https://www.eclemma.org/jacoco/index.html
接著,配置 Jacoco 插件及相關(guān)的 goal,使用 includes 和 excludes 兩個(gè)關(guān)鍵字設(shè)定包含或排除的類路徑
比如:這里只統(tǒng)計(jì) com.xingag.api.service 下面的類
<!--pom.xml-->
<!--配置Jacoco插件信息--><plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<configuration>
<includes>
<!--只包含com/xingag/api/service/下面的類-->
com/xingag/api/service/*
</includes>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>check</id>
<goals>
<goal>check</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
最后,點(diǎn)擊右上角的 Maven 同步,下載依賴并配置項(xiàng)目
//ScoreServiceImpl.java
package com.xingag.api.service;
//被測代碼
public class ScoreServiceImpl {
public String getScoreLevel(int score) {
String result;
if (score > 90) {
result = "優(yōu)秀";
} else if (score < 90 && score >= 75) {
result = "良好";
} else if (score >= 60) {
result = "合格";
} else if (score > 40) {
result = "不合格";
} else if (score >= 0) {
result = "差";
} else {
result = "成績格式不正確";
}
return result;
}
}
//ScoreTests
//測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class ScoreTests {
...
}
//ScoreTests.java
//定義測試方法
//成績優(yōu)秀
@Test
public void testLevelA() {
Assert.assertEquals(RESULT_LEVEL[0], scoreService.getScoreLevel(95));
}
//成績良好
@Test
public void testLevelB() {
Assert.assertEquals(RESULT_LEVEL[1], scoreService.getScoreLevel(80));
}
//成績及格
@Test
public void testLevelC() {
Assert.assertEquals(RESULT_LEVEL[2], scoreService.getScoreLevel(70));
}
用瀏覽器打開統(tǒng)計(jì)報(bào)告文件夾中的 index.html 文件,可以很直觀的查看單元測試覆蓋率及對(duì)應(yīng)測試類的具體覆蓋范圍
看完上述內(nèi)容,你們掌握怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。