91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Jacoco怎么獲取Java 程序代碼執行的覆蓋率

發布時間:2021-03-03 15:36:50 來源:億速云 閱讀:415 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關利用Jacoco怎么獲取Java 程序代碼執行的覆蓋率,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

Jacoco原理簡介

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

使用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:\Users\Robot\Application\jacoco-0.8.5\lib\jacocoagent.jar=destfile=jacoco.exec,output=tcpserver"

其中指定了javaagent是C:\Users\Robot\Application\jacoco-0.8.5\lib\jacocoagent.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怎么獲取Java 程序代碼執行的覆蓋率就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

东城区| 鲁山县| 分宜县| 信宜市| 东台市| 民和| 开封市| 大渡口区| 凤凰县| 广河县| 禹城市| 吴旗县| 峨边| 郯城县| 乃东县| 页游| 赞皇县| 苏州市| 资兴市| 醴陵市| 工布江达县| 通城县| 嘉鱼县| 沭阳县| 苏尼特左旗| 蒙阴县| 社会| 加查县| 曲阜市| 永州市| 绥芬河市| 克什克腾旗| 北票市| 乐山市| 五寨县| 彝良县| 连云港市| 晴隆县| 马鞍山市| 蛟河市| 永定县|