日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jacoco--测试覆盖率工具

發布時間:2023/12/10 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jacoco--测试覆盖率工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

JaCoCo(Java Code Coverage)是一種分析單元測試覆蓋率的工具,使用它運行單元測試后,可以給出代碼中哪些部分被單元測試測到,哪些部分沒有沒測到,并且給出整個項目的單元測試覆蓋情況百分比,看上去一目了然。

JaCoCo會生成以下指標的度量:

Instructions (C0 Coverage)

  • 主要是計算字節碼文件的覆蓋率。

Branches (C1 Coverage)

  • JaCoCo也計算分支覆蓋所有if和 switch語句。主要是計算分支的。
  • 沒有覆蓋:在該行沒有分支機構已執行(紅鉆)
  • 部分覆蓋:只有在該行分支機構的一部分已經被執行(黃鉆)
  • 全覆蓋:在該行各分支機構已執行(綠鉆)

Cyclomatic Complexity

  • 圈復雜度(Cyclomatic Complexity)是一種代碼復雜度的衡量標準。它可以用來衡量一個模塊判定結構的復雜程度,數量上表現為獨立現行路徑條數,也可理解為覆蓋所有的可能情況最少使用的測試用例數。圈復雜度大說明程序代碼的判斷邏輯復雜,可能質量低且難于測試和維護。程序的可能錯誤和高的圈復雜度有著很大關系。請注意,JaCoCo不考慮異常處理的分支機構try-catch塊也不會增加復雜性。總體和分支正相關。實際上,過去幾年的各種研究已經確定:一個方法的圈復雜度(或 CC)大于 10 的方法存在很大的出錯風險。
  • 關于圈復雜度的理解,可以看以下鏈接。

Lines

  • 主要計算基于覆蓋的實際源代碼行類和源文件行覆蓋。通常會標識三種狀態。
  • 沒有覆蓋:在該行任何指令執行(紅色背景)
  • 部分覆蓋:只有在該行的指示的一部分已經被執行(黃色背景)
  • 全覆蓋:在該行的所有指令已執行(綠色背景)

Methods

  • 每個非抽象方法包含至少一個指令。構造函數和靜態初始化都算作方法。

單元測試

Eclipse 插件 EclEmma

EclEmma的安裝

1.啟動eclipse,點擊Help菜單,Install New Software,在彈出的對話框中,點擊Add

2. 輸入Name,例如EclEmma。輸入Location:update.eclemma.org/

3. 在Work With處選擇剛剛輸入的Location地址

4. 安裝后重新啟動eclipse,如果成功安裝,工具欄上會出現一個新的按鈕

EclEmma的使用

1.編寫單元測試用例。現在支持以下測試:

  • Local Java application
  • Eclipse/RCP application
  • Equinox OSGi framework
  • JUnit test
  • TestNG test
  • JUnit plug-in test
  • JUnit RAP test
  • SWTBot test
  • Scala application

2.以JUnit為例,在測試用例文件上右鍵,選擇 Coverage As -> JUnit Test

3. 會在測試的文件中顯示出運行結果:

  • 綠色:完整執行?
  • 紅色:沒執行?
  • 黃色:部分執行

4.通過點擊調出Coverage窗口,它是用來統計程序的覆蓋測試率

5. 點擊紅色矩形框的按鈕能將多次測試的覆蓋數據綜合起來進行查看

6. 在Coverage視圖主區域中點擊右鍵,出現的快捷菜單中選擇”Export Report…”

7.出現Export界面,選項如下:

  • Available sessions:要導出的session?
  • Format:選擇報告的類型(HTML/XML/Text/EMMA session)?
  • Destination:導出的session 存放的位置

IDEA插件

IDEA自帶Jacoco單元測試分析工具,操作步驟如下。
1.選擇編輯配置 “Edit Configurations”。


2.添加單元測試類型,選擇被測文件,此處以TestNG為例,測試所有代碼(不包含lib)。


3.選擇工具jacoco。


4.以覆蓋率模式運行測試用例。


5.運行完成后自動生成測試報告。


MAVEN

在pom.xml文件中添加以下插件后,運行 mvn test 即可在target/site/jacoco文件夾下生成報告。

如果想要跳過失敗的測試用例,請使用 mvn test -Dmaven.test.failure.ignore=true

<plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> <version>0.8.2-SNAPSHOT</version> <executions> <execution> <id>default-prepare-agent</id> <goals> <goal>prepare-agent</goal> </goals> </execution> <execution> <id>default-report</id> <phase>test</phase> <goals> <goal>report</goal> </goals> </execution> <execution> <id>default-check</id> <goals> <goal>check</goal> </goals> </execution> </executions></plugin>復制代碼

運行時測試

jacoco支持程序運行中監控執行情況。下面介紹直接運行和tomcat服務器運行兩種監控方式。

準備

在jacoco官方下載jacoco包,下載連接:www.jacoco.org/jacoco/

下載的包中包括三個jar,此處使用 jacocoagent.jar 和 jacococli.jar

直接運行

1.假如直接運行的是test.jar, 運行以下命令:

java -javaagent:jacoco\jacocoagent.jar=includes=* -jar test.jar

其中下劃線處指明準備中的jar包,后面為參數。

相關參數請參考:www.jacoco.org/jacoco/trun…

2.待程序運行結束后,會在test.jar同級目錄生成jacoco.exec文件,此文件為jacoco獲取的運行情況文件。

3.獲取需要分析的class文件,假設test.jar中的源代碼生成的文件位于com文件夾中,將此文件夾放入和jacoco.exec同一文件夾下。

4.執行命令即可生成報告:

java -jar jacoco\jacococli.jar report jacoco.exec --classfiles com --html report

下劃線處為準備中的jar包,report表明生成報告, jacoco.exec為運行監控文件,–classfiles為生成報告正對的class文件,–html為報告格式,report為報告文件夾。(此處的class文件應當和運行中相同)

詳細參數請參考:www.jacoco.org/jacoco/trun…

tomcat運行

tomcat運行與直至運行的方式基本相同,唯一不同的是指明jacocoagent.jar的方式。

在Windows下,在$TOMCAT_HOME/bin/catalina.bat,Linux下,在$TOMCAT_HOME/bin/catalina.sh的前面,增加如下設置:

set "JAVA_OPTS=-javaagent:=jacoco\jacocoagent.jar=includes=*"

如果在參數中未未指明exec文件的生成路徑,那么會在$TOMCAT_HOME/bin文件夾下生成,其余操作與上述相同。



總結

以上是生活随笔為你收集整理的Jacoco--测试覆盖率工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。