日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

瀏覽:133日期:2022-08-15 17:35:47

Jacoco是Java Code Coverage的縮寫,顧名思義,它是獲取Java代碼執行覆蓋率的一個工具,通常用它來獲取單元測試覆蓋率。它通過分析Java字節碼來得到代碼執行覆蓋率,因此它還可以分析任何基于JVM的語言(如Croovy、Kotlin)的覆蓋率。本文不討論如何用Jacoco獲取單元測試的代碼覆蓋率,而是從Jacoco的原理出發,介紹如何通過Jacoco獲取SIT或者UAT的測試覆蓋率。更準確來講,是獲取一個應用執行過的代碼占總代碼的比率。包括字節碼指令覆蓋率,分支覆蓋率,圈復雜度覆蓋率,行覆蓋率,方法覆蓋率和類覆蓋率。

Jacoco原理簡介

Jacoco通過修改喂給JVM的字節碼來達到獲取那些代碼執行了的目的。修改方式有兩種,一種在線(on-the-fly),是通過Java agent,在JVM執行字節碼之前動態對其進行修改,這種方式更靈活,也是Jcoco的一大特性。另一種是離線(offline)模式,在Java程序字節碼文件(.class文件)生成之前進行修改,這樣的字節碼就不純了。一般在無法使用on-the-fly方式的時候才使用offline方式。

上面這些概括起來講,Jacoco最牛X的地方就在于它能夠知道一個基于JVM的應用程序中哪些代碼(指令、分支、行、方法、類)被執行了。用它除以總代碼量,就得到了代碼執行覆蓋率。

由此,我們可以推斷出Jacoco生成單元測試覆蓋率報告的原理:單元測試代碼會調用被測試代碼,被測試代碼的字節碼指令會被Jacoco截獲,用被截獲的代碼量除以總代碼量,就算出了單元測試代碼覆蓋率。舉一反三,在SIT或者UT的時候,也需要執行Java應用程序中的代碼,因此可以也通過Jacoco獲取被執行過的代碼,從而計算出SIT,UT測試代碼覆蓋率。

使用Jacoco生成代碼執行覆蓋率報告

接下來通過一個實驗介紹如何使用Jacoco獲取一個Java web應用代碼的執行率。就拿Tomcat自帶的example應用來做實驗,我們在啟動Tomcat時帶上Jacoco的Java agent;然后在頁面上做一些點擊操作,觸發后臺Java代碼的執行;再抓取包含執行情況數據,放到.exec的二進制文件中;最后由這些二進制文件生成html格式的報告,驗證被覆蓋的代碼是否和我們點擊的內容相關。

下載Jacoco(https://www.jacoco.org),解壓縮。

下載Tomcat(https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/ 清華mirror),然后解壓縮,進入bin目錄,找到catalina.bat文件(Windows)。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

修改如下代碼,讓Tomcat在啟動時帶上Javacoco的agent。

set 'JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS%'

修改為

set 'JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -javaagent:C:UsersRobotApplicationjacoco-0.8.5libjacocoagent.jar=destfile=jacoco.exec,output=tcpserver'

其中指定了javaagent是C:UsersRobotApplicationjacoco-0.8.5libjacocoagent.jar,解壓Jacoco可以得到;指定了output是tcpserver,也就是需要通過訪問一個地址才能獲取到數據。默認地址是本地IP地址,端口號是6300。其它參數說明見:https://www.jacoco.org/jacoco/trunk/doc/agent.html。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

設置完成之后,雙擊Tomcat bin目錄下的startup.bat,啟動Tomcat??刂婆_可以看見javaagent設置生效。此時Jacoco就可以動態地攔截喂給JVM的字節碼,并且監聽6300端口號和所以本機地址,等待獲取代碼執行情況數據(暫且稱為.exec文件數據)的請求。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

輸入地址http://127.0.0.1:8080/ ,打開Tomcat 歡迎頁面,做一些點擊操作,可以確定它已經執行了一些字節碼。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

獲取執行情況數據,在jacococli.jar所在目錄(與jacocoagent.jar目錄一致)執行命令:

java -jar jacococli.jar dump --port 6300 --destfile data/jacoco-it.exec

Jacoco會在當前目錄下生成data/jacoco-it.exec文件,這個文件是一個二進制文件,我們無法直接查看它,需要用它生成html或者其它格式的文件。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

執行如下命令生成html報告。--classfiles制定應用程序的class文件所在目錄,--html指定html報告所在目錄。

java -jar jacococli.jar report data/jacoco-it.exec --classfiles C:/Users/Robot/Application/apache-tomcat-9.0.29/webapps/examples/WEB-INF/classes --html html

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

打開html目錄下的index.html文件就可以看到報告了。

使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解

小結

上面實驗比較簡單,只為輔助對Jacoco原理的理解。理解了原理之后,參照官網的手冊就可以用Jacoco來做一些實用的操作,提高Java代碼的質量。

以上就是使用Jacoco獲取 Java 程序的代碼執行覆蓋率的步驟詳解的詳細內容,更多關于使用Jacoco獲取 Java 程序的代碼執行覆蓋率的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美天堂视频| 久久亚洲精品中文字幕| 香蕉成人av| 亚洲欧洲美洲av| 日韩另类视频| 最新日韩av| 亚洲精品少妇| 欧美日韩一区二区高清| 国产精品综合| 精品三级在线观看视频| 麻豆视频一区二区| 首页国产欧美久久| 日韩精品欧美成人高清一区二区| 日本aⅴ精品一区二区三区| 青青草国产精品亚洲专区无| 国产精品流白浆在线观看| 精品淫伦v久久水蜜桃| 国产精品国产一区| 久久久久蜜桃| 欧美日韩国产高清| 亚洲2区在线| 精品一区不卡| 999国产精品永久免费视频app| 亚洲免费精品| 日韩av一区二区三区四区| 国产精品2区| 97欧美在线视频| 亚洲欧美伊人| 日本午夜精品一区二区三区电影| 久久99影视| 成人精品中文字幕| 老牛影视一区二区三区 | 国产精品大片| 日韩免费视频| 久久亚洲图片| 精品国产中文字幕第一页| 亚洲午夜av| 91欧美日韩在线| 欧美日韩在线观看首页| 在线亚洲免费| 国产日韩欧美三区| 欧美日韩尤物久久| 日韩中文字幕| 日韩大片免费观看| 亚洲一区欧美| 国产精品二区不卡| 日韩影院在线观看| 国产不卡一区| 蜜桃久久精品一区二区| 国产一区二区精品久| 欧美一区=区| 国产成人免费| 亚洲69av| 亚洲一级特黄| 国产美女视频一区二区| 亚洲天堂久久| 麻豆一区二区三区| 免费成人在线影院| 丁香六月综合| 国产剧情一区| 免费在线观看不卡| 欧洲av一区二区| 国产乱码精品| 欧美日韩日本国产亚洲在线| 久久这里只有精品一区二区| 午夜视频精品| 成人欧美一区二区三区的电影| 日韩av影院| 在线 亚洲欧美在线综合一区| 欧美aaaaaa午夜精品| 日韩专区在线视频| 久久久久国产| 精品视频亚洲| 国产日产一区| 三级一区在线视频先锋| 99视频精品全部免费在线视频| 国产欧美亚洲一区| 蜜桃视频一区二区三区在线观看| 欧洲av不卡| 麻豆一区在线| 国产日韩欧美在线播放不卡| 亚洲一区欧美| 亚洲精品99| 久久婷婷av| 精品久久久中文字幕| 日韩av网站在线免费观看| 亚洲激情欧美| 国产91精品对白在线播放| 久久婷婷国产| 久久国产精品色av免费看| 免费在线看一区| 国产亚洲福利| 婷婷激情综合| 99精品美女| 亚洲综合电影| 国产美女高潮在线| 精品福利久久久| 国产精品久久久久77777丨| 自拍自偷一区二区三区| 黄色亚洲精品| 欧美日韩在线网站| 99久久久国产精品美女| 老牛影视精品| 97精品一区二区| 国产成人77亚洲精品www| 国产精品久久久免费| 日韩精品三级| 日韩av中文字幕一区二区| 亚洲ab电影| 日韩黄色在线观看| 亚洲精品日韩久久| 亚洲精品影视| 日韩在线观看中文字幕| 日韩中文字幕| 7777精品| 日韩av中文字幕一区二区三区| 日韩精品视频一区二区三区| 亚洲男人在线| 欧美欧美黄在线二区| 国产麻豆精品| 麻豆91精品视频| 精品久久视频| 丝袜av一区| 1024精品久久久久久久久| 不卡在线一区二区| 国产精品外国| 亚州国产精品| 国产精品亚洲产品| 电影91久久久| 三级小说欧洲区亚洲区| 欧产日产国产精品视频| 久久三级视频| 丝袜亚洲另类欧美| 婷婷亚洲精品| 国产日本精品| 精品亚洲成人| 99久久精品网| 在线看片一区| 国产精品密蕾丝视频下载| 国产aⅴ精品一区二区四区| se01亚洲视频 | 亚洲无线一线二线三线区别av| av一区二区高清| 国产精品色网| 婷婷综合一区| 麻豆一区在线| 久久久久久久久久久妇女| 久久国产精品久久w女人spa| 无码日韩精品一区二区免费| 国产精品videossex| av资源中文在线天堂| 婷婷激情综合| 97精品久久| 日韩久久精品| 蜜桃视频一区二区三区在线观看 | 国产精品99免费看| 免费人成在线不卡| 国产乱码精品一区二区三区四区| 国际精品欧美精品| 久久国产中文字幕| 亚洲精品字幕| 精品视频高潮| 亚洲欧洲另类| 国产精品www.| 久久视频精品| 日韩国产91| 日韩在线短视频| 亚洲综合福利| 美女精品久久| 亚洲精品成人| 国产精品1区| 午夜精品成人av| 在线免费观看亚洲| 91欧美在线| 亚洲开心激情| 涩涩av在线| 日韩精品一级| 久久三级福利| 国产日韩欧美一区在线| 国模 一区 二区 三区| 日韩精彩视频在线观看| 国产超碰精品| 欧美日韩视频免费看| 99久久精品费精品国产| 国产日韩欧美一区| 欧美日韩国产一区精品一区| 欧美一级二级三级视频| 香蕉人人精品| 欧美黄页在线免费观看 | 麻豆91在线播放| 美女日韩在线中文字幕| 久久三级毛片| 中文字幕一区二区三区四区久久| 国产中文在线播放| 日本va欧美va瓶| 亚洲一级二级| 精品一区二区三区四区五区| 综合五月婷婷| 999久久久精品国产| 久久不卡国产精品一区二区|