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插件,直觀的看代碼覆蓋情況