最近由於工做須要進行代碼覆蓋率統計,因此業餘時間部署了jacoo+ant,進行代碼覆蓋率進行統計。如下是安裝部署過程。
1:什麼是jacoco?
JaCoCo是一個開源的覆蓋率工具(官網地址:http://www.eclemma.org/JaCoCo/),它針對的開發語言是java,其使用方法很靈活,能夠嵌入到Ant、Maven中;能夠做爲Eclipse插件,可使用其JavaAgent技術監控Java程序等等。
不少第三方的工具提供了對JaCoCo的集成,如sonar、Jenkins等。
2:什麼是代碼覆蓋?
測試過程當中根據需求文檔和設計文檔編寫測試用例、執行測試;爲了更加全面的覆蓋,咱們可能還須要理解被測程序的邏輯,須要考慮到每一個函數的輸入與輸出,邏輯分支代碼的執行狀況,這個時候咱們的測試執行狀況就以代碼覆蓋率來衡量,能夠理解爲白盒覆蓋。
以上二者徹底能夠相輔相成,用代碼覆蓋結果反向的檢查需求覆蓋(用例)的測試是否充分完整。
。
3:安裝軟件
3.1:tomcat:由於服務器上已經安裝了tomcat,因此沒有親自在Linux服務器上安裝,
3.2:Jacoco:
安裝步驟:
3.2.1:下載包上傳到Linux服務器,(路徑本身選擇):https://oss.sonatype.org/service/local/artifact/maven/redirect?r=snapshots&g=org.jacoco&a=jacoco&e=zip&v=LATEST
3.2.2:下載unzip工具,命令:sudo apt-get install unzip(1:apt-get sudo apt-get install package #安裝包)
3.2.3:解壓文件,執行命令:unzip jacoco-0.8.2-20180518.004140-15.zip
3.3:ant:
3.2.1:下載:下載地址:http://ant.apache.org/bindownload.cgi 下載apache-ant-1.8.1-bin.tar.gz(當前最新版本),將該下載包拷貝到/home/ubuntu/ant
下(隨意了,找個地方就好)
3.2.2:解壓cd /home/ubuntu/ant ; tar -zxvf apache-ant-1.8.1-bin.tar.gz,解壓後會在/home/ubuntu/ant下生成一個文件夾apache-ant-1.8.1
3.2.3:配置環境變量(ant是基於java的,因此要先確保系統中已經安裝了jdk,檢查系統是否安裝JDK:java -version)
(1)設置用戶環境變量:輸入命令:vim ~/.bashrc,打開文件,輸入ant須要的環境變量;以下內容:
ANT_HOME=/home/ubuntu/ant/apache-ant-1.8.1
PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH
export JAVA_HOME JAVA_BIN ANT_HOME PATH CLASSPATH
(2)退出並保存:esc => shift + : => wq => 回車
(3)【設置環境變量後必須使命令生效!!】再輸入命令使之生效:source ~/.bashrc
4:準備項目
4.1:源碼、WAR包
5:Tomcat配置
5.1:一、進入你須要統計代碼覆蓋率的tomcat :cd /home/ubuntu/local/server/apache-tomcat-7.0.77
5.二、先關閉這個tomcat的服務:正常狀況下能夠直接執行 ./shutdown.sh;執行結束後 ps -ef|grep 端口號 查看是否已經正常關閉,若是尚未關閉 kill -9 pid(來源於ps的結果)
5.三、修改 catalina.sh 的JAVA_OPTS配置
JAVA_OPTS="$JAVA_OPTS -javaagent:/home/ubuntu/jcoco/lib/jacocoagent.jar=includes=*,output=tcpserver,append=true,,port=6101,address=*"
具體參數的意思請查看官方文檔
5.四、啓動服務 ./startup.sh
5.五、查看一下JAVA_OPTS是否有修改正確
6:Ant配置
隨意進入一個目錄新建build.xml,build.xml見附件
7:生成報告:
進入build.xml路徑下執行ant命令:ant dump ;ant report,生成的最終覆蓋率report文件路徑是在build.xml中配置的;到生成report路徑下將report文件down下來,打開index.html則能夠看見覆蓋率報告。html
生成報告截圖以下:java
build.xml文件
<?xml version="1.0" ?>
<project name="coverage" xmlns:jacoco="antlib:org.jacoco.ant" default="report">
<!--Jacoco的安裝路徑-->
<property name="jacocoantPath" value="/home/ubuntu/jcoco/lib/jacocoant.jar"/>
<!--最終生成.exec文件的路徑,Jacoco就是根據這個文件生成最終的報告的-->
<property name="jacocoexecPath" value="/home/ubuntu/jcoco/jacoco.exec"/>
<!--生成覆蓋率報告的路徑-->
<property name="reportfolderPath" value="/home/ubuntu/jacoco/report"/>
<!--遠程tomcat服務的ip地址-->
<property name="server_ip" value="127.0.0.1"/>
<!--前面配置的遠程tomcat服務打開的端口,要跟上面配置的同樣-->
<property name="server_port" value="6101"/>
<!--源代碼路徑-->
<property name="wqltest-src" value="/home/ubuntu/wqltest/jacocowql/src/main/java" />web
<!--.class文件路徑-->
<property name="wqltest-classpath" value="/home/ubuntu/local/server/apache-tomcat-7.0.77/webapps/jacocowql/WEB-INF/classes" />
apache
<!--讓ant知道去哪兒找Jacoco-->
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${jacocoantPath}" />
</taskdef>ubuntu
<!--dump任務:
根據前面配置的ip地址,和端口號,
訪問目標tomcat服務,並生成.exec文件。-->
<target name="dump">
<jacoco:dump address="${server_ip}" reset="false" destfile="${jacocoexecPath}" port="${server_port}" append="false"/>
</target>
<!--jacoco任務:
根據前面配置的源代碼路徑和.class文件路徑,
根據dump後,生成的.exec文件,生成最終的html覆蓋率報告。-->
<target name="report" depends="dump">
<delete dir="${reportfolderPath}" />
<mkdir dir="${reportfolderPath}" />
<jacoco:report>
<executiondata>
<file file="${jacocoexecPath}" />
</executiondata>
<structure name="JaCoCo Report">
<group name="wqltest">
<classfiles>
<fileset dir="${wqltest-classpath}" />
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${wqltest-src}" />
</sourcefiles>
</group>
vim
</structure>tomcat
<html destdir="${reportfolderPath}" encoding="utf-8" />
</jacoco:report>
</target>
</project>bash
以上就是本次安裝部署過程總結。服務器