jacoco+bamboo+sonar 代碼覆蓋率

1、編寫測試用例


2、下載jacoco

下載地址:http://www.jacoco.org/jacoco/,並解壓,收集數據只要lib下面的jacocoagent.jar,其他文件不需要jacocoagent.jar:文件上傳到服務器上,jvm配置的時候需要用到該文件


3、修改jvm啓動參數
在啓動腳本中添加如下啓動選項:
-javaagent:/data1/apps/jacoco/jacocoagent.jar=output=file,destfile=/data1/apps/jacoco/data/jacoco.exec


加-javaagent:${JACOCO_HOME}\lib\jacocoagent.jar=output=file,destfile=${JACOCO_RESULT_PATH}\jacoco.exec
jacocoagent.jar:配置正確的jacocoagent.jar文件路徑
JACOCO_RESULT_PATH:jvm退出時,jacoco回寫測試結果的文件路徑


注意:
添加jacoco配置的時候,記得要添加到java的後面

如果代碼中有用到反射,需要配置jvm文件中的如下:
見示例:
以下的excludes=com.sangame.storehouse.*,includes=等等

官方文檔見:
http://www.eclemma.org/jacoco/trunk/doc/agent.html



4、啓動應用(啓動需要測試的應用)


5、執行測試用例(跑接口腳本)


6、生成代碼測試覆蓋率數據文件,即:exec文件

      跑完之後,殺掉測試項目的進程(需要用kill -15 進程號,kill -9殺掉後,並不會回寫jacoco.exec的測試報告到指定文件夾下)

7、上傳jacoco數據文件到svn

以上6、7,可以將這些操作整理成shell腳本,進行處理

#!/bin/bash
#1)先殺掉項目進程
kill -15  `ps auxf|grep 'com.qh18.jjh.futures.TradeServerMain testing'|grep -v grep | awk '{print $2}'`

PS:
awk '{print $2}',這個$2,代表取www後的這個31152的值
www      31152 14.9  5.4 3886472 438200 ?      Sl   14:52  30:22 java -Dvertx.logger-delegate-factory-class-name=io.vertx.core.logging.SLF4JLogDelegateFactory -javaagent:/data1/apps/jacoco/jacocoagent.jar=output=file,destfile=/data1/apps/jacoco/data/jacoco.exec -Xms128m -Xmx700m -XX:PermSize=64m -XX:MaxPermSize=64m -XX:NewSize=64m -XX:MaxNewSize=64m -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelGCThreads=4 -server com.qh18.jjh.futures.TradeServerMain testing


#2)先更新svn的資源
svn update /data1/svndir/jacoco
PS:要先在服務器上down一份svn上的資源(當然這一步也可以直接用命令來實現)

#3)拷貝跑出來的jacoco文件到linux服務器上的本地倉庫裏
cp /data1/apps/jacoco/data/jacoco-it.exec /data1/svndir/jacoco

cd /data1/svndir/jacoco

#4)提交jacoco文件到指定svn上
svn commit -m "$(echo "$(date)")"

#5再重啓項目
/data1/apps/future/future-trade/startup.sh

8、使用bamboo+sonar跑覆蓋率結果(執行新建的job)

9、進入sonar插件,查看覆蓋率報告

針對第8點,這邊細說一下:

1、新建一個打包項目Project
2、創建一個Plan


配置該Plan下全局的SVN配置(Repositories,SVN的倉庫)

 

 

 

3、在該Plan下面創建Job



4、並配置該Job下的tasks(難點)
先要配置好該job的agent,需要看項目中用到哪個agent,則配成哪個(可從打包日誌中獲取)


1)、Source Code Checkout configuration(來自於以上的步驟2中的全局SVN配置)
搜索Source Code Checkout插件




2)、配置Sonar Maven 3 configuration
Add task->搜索Sonar Maven 3的插件->並添加
配置如下:


Working subdirectory來自於以下:

當輸出如下日誌時,構建成功:

輸入以上給出的url,查看覆蓋率如下:


PS:也可以把開發代碼down到本地,在eclipse中查看被覆蓋的情況,需要eclipse裝一個插件便可
Java Code Coverage for Eclipse
可參考如下URL:http://www.eclemma.org/installation.html#marketplace

問題繼續引申:
多個jacoco文件怎麼合併爲1個jacoco文件,並出sonar分析報告

下期將演示:
通過idea中安裝jacoco插件,直觀的看代碼覆蓋情況

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章