jacoco統(tǒng)計遠(yuǎn)程服務(wù)器代碼覆蓋率

場景需求

由于項目的需要,當(dāng)前我們開發(fā)的服務(wù)端代碼和接口以及集成測試代碼不是寫在同一個項目下喧笔,當(dāng)測接口時胸墙,我們發(fā)送一個http request請求到Linux服務(wù)端撩嚼,然后服務(wù)端返回一個response祖驱,這樣的情況如何做代碼覆蓋率統(tǒng)計握恳?

前提條件

  1. 安裝ant,并且設(shè)置環(huán)境變量
  2. 下載jacoco的jar包 點擊下載

服務(wù)端設(shè)置(Linux)

現(xiàn)在的springboot應(yīng)用非常多捺僻,其本身自帶tomcat乡洼,網(wǎng)上很多都是說修改tomcat的Catalina.sh文件來使用javaagent:

JAVA_OPTS="-javaagent:[yourPath/]jacocoagent.jar=includes=com.didispace.*,output=tcpserver,port=8044,address=30.11.227.26 -Xverify:none"

針對springboot應(yīng)用使用如下方式運行:

java -javaagent:D:/tools/jacoco-0.7.9/lib/jacocoagent.jar=includes=com.didispace.*,output=tcpserver,port=8044,address=30.11.227.26 -jar Chapter1-1.0.0.jar

output有4個值崇裁,分別是file,tcpserver,tcpclient,mbean,默認(rèn)是file束昵。使用file的方式只有在停掉應(yīng)用服務(wù)的時候才能產(chǎn)生覆蓋率文件拔稳,而使用tcpserver的方式可以在不停止應(yīng)用服務(wù)的情況下下載覆蓋率文件

客戶端設(shè)置(Windows)

在客戶端運行ant dump之前,這時可以對服務(wù)端進(jìn)行接口以及功能測試妻怎,這時所有的調(diào)服務(wù)端接口操作都會記錄代碼覆蓋率壳炎。

結(jié)合Jenkins生成report

在目錄D:\test-resourse\下新建一個文件夾trap泞歉,trap文件夾下新建一個build.xml文件逼侦,文件內(nèi)容如下:

<?xml version="1.0" ?>
<project name="Jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">   
  //此處的value里面的路徑,對應(yīng)上面下載的jar文件路徑
  <property name="jacocoantPath" value="D:/tools/jacoco-0.7.9/lib/jacocoant.jar"/>
  <property name="integrationJacocoexecPath" value="./jacoco-integration.exec"/>

  <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
    <classpath path="${jacocoantPath}" />
  </taskdef>

  <target name="dump">
//此處的address地址即為程序/tomcat所在的linux機器地址腰耙,host與上文命令行host對應(yīng)
      <jacoco:dump address="30.11.227.26" port="8044" reset="true" destfile="${integrationJacocoexecPath}" append="false"/>
  </target>
</project>

接著在build.xml文件目錄下運行ant dump命令就會在當(dāng)前目錄下出現(xiàn)一個.exec后綴名結(jié)尾的文件榛丢,出現(xiàn)如下圖所示的代表運行成功

image.png
本地生成report

trap文件夾下新建一個localReport文件夾,localReport文件夾下新建一個build.xml文件

<?xml version="1.0" ?>
<project name="jacoco" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
    <!--Jacoco的安裝路徑-->
  <property name="jacocoantPath" value="[yourPath/]jacocoant.jar"/>
  <!--最終生成.exec文件的路徑挺庞,Jacoco就是根據(jù)這個文件生成最終的報告的-->
  <property name="jacocoexecPath" value="[yourPath/]jacoco.exec"/>
    <!--生成覆蓋率報告的路徑-->
  <property name="reportfolderPath" value="[storageReportPath]"/>
  <!--遠(yuǎn)程Tomcat服務(wù)的ip地址-->
  <property name="server_ip" value="100.44.44.144"/>
  <!--前面配置的遠(yuǎn)程Tomcat服務(wù)打開的端口晰赞,要跟上面配置的一樣-->
  <property name="server_port" value="8044"/>
  <!--本地源代碼路徑-->
  <property name="checkOrderSrcpath" value="[Srcpath]" />
  <!--本地.class文件路徑-->
  <property name="checkOrderClasspath" value="[classPath]" />

  <!--讓ant知道去哪兒找Jacoco-->
  <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
      <classpath path="${jacocoantPath}" />
  </taskdef>

  <!--dump任務(wù):
      根據(jù)前面配置的ip地址,和端口號选侨,
      訪問目標(biāo)Tomcat服務(wù)掖鱼,并生成.exec文件。-->
  <target name="dump">
      <jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="true"/>
  </target>

  <!--jacoco任務(wù):
      根據(jù)前面配置的源代碼路徑和.class文件路徑援制,
      根據(jù)dump后戏挡,生成的.exec文件,生成最終的html覆蓋率報告晨仑。-->
  <target name="report">
      <delete dir="${reportfolderPath}" />
      <mkdir dir="${reportfolderPath}" />

      <jacoco:report>
          <executiondata>
              <file file="${jacocoexecPath}" />
          </executiondata>

          <structure name="JaCoCo Report">
              <group name="Check Order related">           
                  <classfiles>
                      <fileset dir="${checkOrderClasspath}" />
                  </classfiles>
                  <sourcefiles encoding="gbk">
                      <fileset dir="${checkOrderSrcpath}" />
                  </sourcefiles>
              </group>
          </structure>

          <html destdir="${reportfolderPath}" encoding="utf-8" />         
      </jacoco:report>
  </target>
</project>

在剛才新建的build.xml目錄下運行如下命令

//先執(zhí)行
ant dump
//再執(zhí)行
ant report

這時會在build.xml配置文件reportfolderPath屬性配置的路徑下生成幾個文件褐墅,其中有一個index.html文件,將其打開就是覆蓋率報告

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末洪己,一起剝皮案震驚了整個濱河市妥凳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌答捕,老刑警劉巖逝钥,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拱镐,居然都是意外死亡艘款,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門痢站,熙熙樓的掌柜王于貴愁眉苦臉地迎上來磷箕,“玉大人,你說我怎么就攤上這事阵难≡兰希” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長空繁。 經(jīng)常有香客問我殿衰,道長,這世上最難降的妖魔是什么盛泡? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任闷祥,我火速辦了婚禮,結(jié)果婚禮上傲诵,老公的妹妹穿的比我還像新娘凯砍。我一直安慰自己,他們只是感情好拴竹,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布悟衩。 她就那樣靜靜地躺著,像睡著了一般栓拜。 火紅的嫁衣襯著肌膚如雪座泳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天幕与,我揣著相機與錄音挑势,去河邊找鬼。 笑死啦鸣,一個胖子當(dāng)著我的面吹牛潮饱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赏陵,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼饼齿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蝙搔?” 一聲冷哼從身側(cè)響起缕溉,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎吃型,沒想到半個月后证鸥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡勤晚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年枉层,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赐写。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡鸟蜡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挺邀,到底是詐尸還是另有隱情揉忘,我是刑警寧澤跳座,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站泣矛,受9級特大地震影響疲眷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜您朽,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一狂丝、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哗总,春花似錦几颜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耻煤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間准颓,已是汗流浹背哈蝇。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留攘已,地道東北人炮赦。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像样勃,于是被迫代替她去往敵國和親吠勘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理峡眶,服務(wù)發(fā)現(xiàn)剧防,斷路器,智...
    卡卡羅2017閱讀 134,714評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,312評論 25 707
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評論 6 342
  • !/usr/bin/env python -- coding: utf-8 -- 抓取糗事百科的html
    Lazy1閱讀 794評論 0 2
  • 本次學(xué)習(xí)內(nèi)容: 目標(biāo)詞匯: Family: mother, father, sister, brother, gr...
    TimmySHENX閱讀 213評論 0 0