怎么使用Jacoco統(tǒng)計服務端代碼覆蓋率,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比秀洲網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式秀洲網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋秀洲地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
使用 Python + Coverage 來統(tǒng)計測試用例的代碼覆蓋率
Jacoco 針對 Java 語言的一款開源的覆蓋率工具,可以嵌入到 Maven、Gradle 中,提供多種尺度的覆蓋率計數(shù)器,比如:類覆蓋、行覆蓋、分支覆蓋等
本篇將聊聊服務端代碼的覆蓋率統(tǒng)計,以 Spring Boot 項目為例,使用 Jacoco + junit 來統(tǒng)計服務端的代碼覆蓋率
首先使用 IDEA 創(chuàng)建一個 Spring Boot 項目( Maven ),以之前 構(gòu)建 RESTFul API 的項目 代碼為基礎(chǔ)
然后,配置 pom.xml 文件,為當前項目新增 jacoco 依賴 JAR 包
org.jacoco
jacoco-maven-plugin
0.8.5
jacoco 版本可以參考:
https://www.eclemma.org/jacoco/index.html
接著,配置 Jacoco 插件及相關(guān)的 goal,使用 includes 和 excludes 兩個關(guān)鍵字設定包含或排除的類路徑
比如:這里只統(tǒng)計 com.xingag.api.service 下面的類
org.jacoco
jacoco-maven-plugin
0.8.5
com/xingag/api/service/*
prepare-agent
prepare-agent
check
check
report
prepare-package
report
最后,點擊右上角的 Maven 同步,下載依賴并配置項目
//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)計報告文件夾中的 index.html 文件,可以很直觀的查看單元測試覆蓋率及對應測試類的具體覆蓋范圍
看完上述內(nèi)容,你們掌握怎么使用Jacoco統(tǒng)計服務端代碼覆蓋率的方法了嗎?如果還想學到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!