溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率

發(fā)布時(shí)間:2021-12-08 15:36:59 來源:億速云 閱讀:199 作者:柒染 欄目:大數(shù)據(jù)

怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

1. 前言

 使用 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ù)端的代碼覆蓋率

 

2. 準(zhǔn)備

首先使用 IDEA 創(chuàng)建一個(gè) Spring Boot 項(xiàng)目( Maven ),以之前 構(gòu)建 RESTFul API 的項(xiàng)目 代碼為基礎(chǔ)

怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率

然后,配置 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)目

 

3. 實(shí)戰(zhàn)一下

首先,編寫一段簡單的被測代碼,根據(jù)考試成績返回不同的結(jié)果
//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;
    }
}
然后,在 test 測試文件夾內(nèi),  編寫測試類和單元測試方法
@RunWith(SpringRunner.class) 、  @SpringBootTest    用于注解測  試類,表明當(dāng)前類作為一個(gè)測試類處理  
//ScoreTests
//測試類
@RunWith(SpringRunner.class)
@SpringBootTest
public class ScoreTests {
    ...
}
接著,在測試類中以 Junit 的    @Test    注解定義 3   個(gè)單元測試方法  
//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));
}
最后,在 Terminal 指向項(xiàng)目根目錄,輸入   mvn test jacoco:report   命令生成代碼覆蓋率報(bào)告
代碼覆蓋率報(bào)告目錄在  :./target/site/jacoco

怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率

用瀏覽器打開統(tǒng)計(jì)報(bào)告文件夾中的 index.html 文件,可以很直觀的查看單元測試覆蓋率及對(duì)應(yīng)測試類的具體覆蓋范圍

怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率

看完上述內(nèi)容,你們掌握怎么使用Jacoco統(tǒng)計(jì)服務(wù)端代碼覆蓋率的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(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)容。

AI