最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在idea中使用JaCoCo插件統(tǒng)計(jì)單元測(cè)試覆蓋率的實(shí)現(xiàn)

 更新時(shí)間:2021年01月22日 09:21:00   作者:風(fēng)雨詩(shī)軒  
這篇文章主要介紹了在idea中使用JaCoCo插件統(tǒng)計(jì)單元測(cè)試覆蓋率的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

在后臺(tái)工程師開(kāi)發(fā)完新代碼交給QA進(jìn)行測(cè)試時(shí),軟件測(cè)試人員一般都會(huì)要求后臺(tái)開(kāi)發(fā)對(duì)單元測(cè)試的覆蓋率達(dá)到一定的標(biāo)準(zhǔn);例如我們的標(biāo)準(zhǔn)是分支覆蓋率達(dá)到50%以上,函數(shù)覆蓋率達(dá)到50%以上。

在idea中查看覆蓋率挺簡(jiǎn)單的,idea中支持三種插件來(lái)查看覆蓋率,每種插件統(tǒng)計(jì)明細(xì)各有千秋,分別是idea自帶插件、JaCoCo、Emma。

在idea中打開(kāi)一個(gè)測(cè)試類,點(diǎn)擊右上角“Edit Configurations”按鈕,如下圖所示:

然后會(huì)彈出一個(gè)框,左側(cè)菜單欄顯示JUnit欄目,右邊我們選擇“Code Coverage"選項(xiàng)卡,下面有一個(gè)”choose coverage runner“下拉菜單,默認(rèn)是idea自帶的,我們可以切換成其他的(只不過(guò)需要在pom中配置一下),如下圖所示:

idea默認(rèn)自帶的插件,統(tǒng)計(jì)出來(lái)的覆蓋率只包含classes、method、line,不太詳細(xì),不能滿足我們的要求;所以一般使用JaCoCo插件來(lái)統(tǒng)計(jì),我們切換成JaCoCo插件以后,緊接著在maven的pom文件中這樣配置:

(1)添加依賴

<dependency>
 <groupId>org.jacoco</groupId>
 <artifactId>jacoco-maven-plugin</artifactId>
 <version>0.8.2</version>
</dependency>

(2)配置plugins

<plugin>
 <groupId>org.jacoco</groupId>
 <artifactId>jacoco-maven-plugin</artifactId>
 <version>0.8.2</version>
 <configuration>
  <destFile>target/coverage-reports/jacoco-unit.exec</destFile>
  <dataFile>target/coverage-reports/jacoco-unit.exec</dataFile>
  <includes>
   <include>**/service/**</include>
   <include>**/controller/**</include>
   <!--<include>**/service/impl/*.class</include>-->
  </includes>
  <!-- rules里面指定覆蓋規(guī)則 -->
  <rules>
   <rule implementation="org.jacoco.maven.RuleConfiguration">
    <element>BUNDLE</element>
    <limits>  
     <!-- 指定方法覆蓋到50% -->
     <limit implementation="org.jacoco.report.check.Limit">
      <counter>METHOD</counter>
      <value>COVEREDRATIO</value>
      <minimum>0.50</minimum>
     </limit>
     <!-- 指定分支覆蓋到50% -->
     <limit implementation="org.jacoco.report.check.Limit">
      <counter>BRANCH</counter>
      <value>COVEREDRATIO</value>
      <minimum>0.50</minimum>
     </limit>
     <!-- 指定類覆蓋到100%,不能遺失任何類 -->
     <limit implementation="org.jacoco.report.check.Limit">
     <counter>CLASS</counter>
     <value>MISSEDCOUNT</value>
     <maximum>0</maximum>
     </limit>
    </limits>
   </rule>
  </rules>
 </configuration>
 <executions>
  <execution>
   <id>jacoco-initialize</id>
   <goals>
    <goal>prepare-agent</goal>
   </goals>
  </execution>
  <!--這個(gè)check:對(duì)代碼進(jìn)行檢測(cè),控制項(xiàng)目構(gòu)建成功還是失敗-->
  <execution>
   <id>check</id>
   <goals>
    <goal>check</goal>
   </goals>
  </execution>
  <!--這個(gè)report:對(duì)代碼進(jìn)行檢測(cè),然后生成index.html在 target/site/index.html中可以查看檢測(cè)的詳細(xì)結(jié)果-->
  <execution>
   <id>jacoco-site</id>
   <phase>package</phase>
   <goals>
    <goal>report</goal>
   </goals>
  </execution>
 </executions> 
</plugin>

如果你想使用idea自帶的插件,查看簡(jiǎn)單的覆蓋率數(shù)據(jù),可以直接在測(cè)試類上右鍵點(diǎn)擊”Run ‘xxxxxTest' with Coverage",如下圖所示:

當(dāng)JaCoCo插件配置好以后,要獲得 JaCoCo的統(tǒng)計(jì)數(shù)據(jù),就要執(zhí)行mvn install 命令。執(zhí)行完以后,target/site/jacoco/目錄下會(huì)生成一個(gè)index.html文件,這是統(tǒng)計(jì)數(shù)據(jù)總覽頁(yè)面,可以在瀏覽器打開(kāi)查看,如下圖所示:

由于我們?cè)趐om文件的plugin里面配置了rule規(guī)則和check 目標(biāo),所以在覆蓋率不滿足的情況下,mvn install是不會(huì)成功的,并且會(huì)報(bào)錯(cuò):

另一個(gè)需要注意的是我在rule中配置的規(guī)則,有的是 COVEREDRATIO,有的是MISSEDCOUNT,這說(shuō)明有的統(tǒng)計(jì)的是覆蓋率,有的統(tǒng)計(jì)的是丟失率(也即未覆蓋到的),你可別看錯(cuò)了。

配置JaCoCo插件一定注意和JDK版本的對(duì)應(yīng)關(guān)系,如果你用的是jdk1.8,則插件一定要用最新版,要不然會(huì)報(bào)如下錯(cuò)誤:

Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
 at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
 at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:99)
 at org.jacoco.agent.rt.internal_5d10cad.PreMain.createRuntime(PreMain.java:51)
 at org.jacoco.agent.rt.internal_5d10cad.PreMain.premain(PreMain.java:43)
 ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
 at java.lang.Class.getField(Class.java:1542)
 at org.jacoco.agent.rt.internal_5d10cad.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:136)
 ... 9 more
FATAL ERROR in native method: processing of -javaagent failed
Exception in thread "main" 

補(bǔ)充:Intellij IDEA run coverage之覆蓋率測(cè)試

一.選擇覆蓋率報(bào)表工具

二.運(yùn)行測(cè)試用例

三.查看覆蓋率報(bào)表

四.下載查看報(bào)表

點(diǎn)擊這個(gè)

勾選open

查看報(bào)表

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式

    SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式

    編程式事務(wù)管理是通過(guò)編寫(xiě)代碼來(lái)管理事務(wù),相對(duì)于聲明式事務(wù)(@Transactional注解),它提供了更細(xì)粒度的事務(wù)控制,這篇文章主要介紹了SpringBoot 編程式事務(wù)使用及兩種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2024-12-12
  • Spring Boot之過(guò)濾器 Filter注入的方式解析

    Spring Boot之過(guò)濾器 Filter注入的方式解析

    這篇文章主要介紹了Spring Boot之過(guò)濾器 Filter注入的方式解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • SpringBoot+MinIO實(shí)現(xiàn)文件切片極速詳解

    SpringBoot+MinIO實(shí)現(xiàn)文件切片極速詳解

    在現(xiàn)代Web應(yīng)用中,文件上傳是一個(gè)常見(jiàn)的需求,尤其是對(duì)于大文件的上傳,如視頻、音頻或大型文檔,所以本文就來(lái)為大家介紹一下如何使用Spring Boot和MinIO實(shí)現(xiàn)文件切片極速上傳技術(shù)吧
    2023-12-12
  • 使用spring的websocket創(chuàng)建通信服務(wù)的示例代碼

    使用spring的websocket創(chuàng)建通信服務(wù)的示例代碼

    這篇文章主要介紹了使用spring的websocket創(chuàng)建通信服務(wù)的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11
  • java求整數(shù)的位數(shù)方式

    java求整數(shù)的位數(shù)方式

    這篇文章主要介紹了java求整數(shù)的位數(shù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot打印接口調(diào)用日志的實(shí)例

    springboot打印接口調(diào)用日志的實(shí)例

    這篇文章主要介紹了springboot打印接口調(diào)用日志的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • JAVA多線程之中斷機(jī)制stop()、interrupted()、isInterrupted()

    JAVA多線程之中斷機(jī)制stop()、interrupted()、isInterrupted()

    這篇文章主要介紹了JAVA多線程之中斷機(jī)制stop()、interrupted()、isInterrupted()的相關(guān)資料,需要的朋友可以參考下
    2016-05-05
  • JavaBean和Map轉(zhuǎn)換封裝類的方法

    JavaBean和Map轉(zhuǎn)換封裝類的方法

    下面小編就為大家?guī)?lái)一篇JavaBean和Map轉(zhuǎn)換封裝類的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-10-10
  • Java 隨機(jī)生成任意組電話號(hào)碼過(guò)程解析

    Java 隨機(jī)生成任意組電話號(hào)碼過(guò)程解析

    這篇文章主要介紹了Java 隨機(jī)生成任意組電話號(hào)碼過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Springboot使用redis實(shí)現(xiàn)接口Api限流的示例代碼

    Springboot使用redis實(shí)現(xiàn)接口Api限流的示例代碼

    本文主要介紹了Springboot使用redis實(shí)現(xiàn)接口Api限流的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

桂林市| 茌平县| 游戏| 西乌| 靖边县| 建湖县| 台湾省| 双城市| 紫阳县| 布尔津县| 南昌县| 宜昌市| 洪雅县| 望谟县| 金坛市| 鄂尔多斯市| 普洱| 财经| 太和县| 睢宁县| 新平| 景洪市| 百色市| 浪卡子县| 西城区| 蓝田县| 漯河市| 贺兰县| 香格里拉县| 怀宁县| 洛川县| 杭锦后旗| 平凉市| 荥阳市| 微博| 临高县| 九龙城区| 阳信县| 彝良县| 屏东县| 木兰县|