zoukankan      html  css  js  c++  java
  • jacoco+ant安装部署篇

      最近因为工作需要进行代码覆盖率统计,所以业余时间部署了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:1、进入你需要统计代码覆盖率的tomcat  :cd /home/ubuntu/local/server/apache-tomcat-7.0.77
    5.2、先关闭这个tomcat的服务:正常情况下可以直接执行  ./shutdown.sh;执行结束后 ps -ef|grep 端口号 查看是否已经正常关闭,如果还没有关闭 kill -9 pid(来源于ps的结果)
    5.3、修改 catalina.sh  的JAVA_OPTS配置
    JAVA_OPTS="$JAVA_OPTS -javaagent:/home/ubuntu/jcoco/lib/jacocoagent.jar=includes=*,output=tcpserver,append=true,,port=6101,address=*"
    具体参数的意思请查看官方文档
    5.4、启动服务 ./startup.sh
    5.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则可以看见覆盖率报告。

    生成报告截图如下:

    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" />


      <!--.class文件路径-->
      <property name="wqltest-classpath" value="/home/ubuntu/local/server/apache-tomcat-7.0.77/webapps/jacocowql/WEB-INF/classes" />
     
     

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

      <!--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>
       

              </structure>

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


    以上就是本次安装部署过程总结。

  • 相关阅读:
    SQL创建的几种存储过程
    关于freemaker的一点使用技巧
    freemaker时间格式转换,精确到毫秒
    递归算法
    网易开发工程师编程题 比较重量 Java
    JavaScript tasks, microtasks, queues and schedules
    1000分以下局目标
    Lua简介
    浅谈Wireshark的基本操作
    adb操作
  • 原文地址:https://www.cnblogs.com/qiaoli0726/p/9094202.html
Copyright © 2011-2022 走看看