Jacoco遠程統計tomcat服務(Windows系統)的代碼覆蓋率

Jacoco遠程統計tomcat服務(Windows系統)的代碼覆蓋率

2017-09-21html

目錄java

1 Jacoco的安裝和設置
  1.1 什麼是Jacoco?
  1.2 Jacoco安裝
  1.3 Tomcat配置
2 在客戶端進行功能測試或接口測試
3 Ant安裝與配置
  3.1 安裝
  3.2 配置build.xml
4 生成代碼覆蓋率報告
5 查看結果apache

 

開發在作單元測試時,經過開發工具的插件很容易獲得測試代碼覆蓋率。當軟件部署好以後,咱們經過功能測試或接口測試,可否獲得代碼覆蓋率?Jacoco能夠經過JavaAgent技術監控Java程序的到代碼覆蓋率。tomcat

此文介紹java Agent的'tcpserver' output方法,用此方法時,JavaAgent會監聽服務器端設置(Tomcat配置)的TCP port,而後把收集到的信息(jacoco.exec)寫入TCP connection。而後經過jacocoant在客戶端把收集的信息(jacoco.exec)從TCP connection拉取到客戶端,再根據收集到信息(jacoco.exec)和源代碼生成覆蓋率report。服務器

1 Jacoco的安裝和設置


 返回app

1.1 什麼是Jacoco?

Jacoco是一個開源的Java代碼覆蓋率工具,Jacoco能夠嵌入到Ant 、Maven中,並提供了EclEmma Eclipse插件,也能夠使用JavaAgent技術監控Java程序。不少第三方的工具提供了對Jacoco的集成,如sonar、Jenkins等。maven

1.2 Jacoco安裝

官網地址:http://www.eclemma.org/jacoco/ (這裏下載了jacoco-0.7.4.201502262128.zip版本)tcp

下載後加壓到目錄:D:\CodeCoverage\jacocoide

1.3 Tomcat配置

1 關閉Tomcat:雙擊安裝目錄下的 D:\tomcat\bin\shutdown.bat (window是bat擴展名、Linux是sh擴展名)工具

2 修改D:\tomcat\bin\catalina.bat,在第一行添加以下腳本:

set JAVA_OPTS=-javaagent:D:\CodeCoverage\jacoco\lib\jacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true

 JVM option 格式:-javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2]

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

或者:啓動的時候加上javaagent參數

java -javaagent:/opt/quality/lib/jacocoagent.jar=includes=*,output=tcpserver,port=6300,address=*,append=true -jar /app/bin/start.jar

3 啓動Tomcat:雙擊安裝目錄下的 D:\tomcat\bin\startup.bat

4 驗證JAVA_OPTS是否有修改正確

使用WMIC命令

vmic 
process where name="java.exe"

若顯示一下內容,表示修改爲功
java.exe  "D:\Java\jdk1.8.0_91\bin\java.exe"  -javaagent:D:\CodeCoverage\jacoco\lib\jacocoagent.jar=includes=*,output=tcpserver,address=172.31.1.32,port=6300,append=true

 

圖1 process WMIC

2 在客戶端進行功能測試或接口測試


 返回

1 測試對象:SpringMVC HelloWorld實例開發及部署

2 功能測試:輸入url:http://localhost:8080/HelloSpringMVC/saveResult

說明:在功能測試過程當中javaagent會收集覆蓋到的代碼信息

3 Ant安裝與配置


 返回

3.1 安裝

1 官方網址: http://ant.apache.org -> download -> binary distribute apache-ant-1.9.9-bin.zip

  解壓到:D:\CodeCoverage\ant

2 驗證安裝是否成功

  在安裝目錄D:\CodeCoverage\ant\bin下執行命令:ant -version

3.2 配置build.xml

<?xml version="1.0" encoding="UTF-8"?>
<project name="plate_id_sample_service" xmlns:jacoco="antlib:org.jacoco.ant">
    <taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
        <classpath path="D:\CodeCoverage\jacoco\lib\jacocoant.jar"/>
    </taskdef>
    
    <target name="dump">
        <!-- address和port和catalina.bat設置保持一致,destfile設置jacoco.exec保存地址 -->
        <jacoco:dump address="172.31.1.32" reset="true" port="6300" destfile="D:\CodeCoverage\jacoco\jacoco.exec"/>
    </target>
    
    <target name="report">
        <jacoco:report>                        
            <executiondata>
                <file file="D:\CodeCoverage\jacoco\jacoco.exec"/>
            </executiondata>
                        
            <structure name="Example Project">
                <!-- 能夠按軟件功能模塊設置多個group,方便在report中查看 -->
                <group name="SpringMVC">           
                    <classfiles>
                        <!--.class文件路徑,能夠放在客戶端-->
                        <fileset dir="D:\CodeCoverage\project\HelloSpringMVC\classes"/>
                    </classfiles>
                    <sourcefiles encoding="gbk">
                        <!--源代碼路徑,能夠放在客戶端-->
                        <fileset dir="D:\CodeCoverage\project\HelloSpringMVC\java" />
                    </sourcefiles>
                </group>
            </structure>
                     
            <!-- report文件保存地址 -->
            <html destdir="D:\CodeCoverage\jacoco\report"/>
                        
        </jacoco:report>
    </target>
</project>
View Code

4 生成代碼覆蓋率報告


 返回

在ant安裝目錄運行ant dump命令,把jacoco.exec拉取到build.xml設置的客戶端路徑

在ant安裝目錄運行ant report命令,根據build.xml設置jacoco.exec、class和java文件地址生成report

圖2 ant命令

5 查看結果


 返回

若build.xml沒有設置源代碼java的地址,就看不到代碼內容的覆蓋狀況,最細只能看到方法的覆蓋率統計

圖3 覆蓋率報表

相關文章
相關標籤/搜索