美文网首页
Jenkins+JaCoCo实现系统集成测试覆盖率统计

Jenkins+JaCoCo实现系统集成测试覆盖率统计

作者: 雷神VeryYoung | 来源:发表于2018-11-16 17:48 被阅读0次
需要准备如下材料:
  1. Jenkins机器上的ant安装,构建时采用ant构建
  2. Jenkins安装插件Record JaCoCo coverage report
  3. 被统计的源码文件
  4. 被统计的源码编译后的文件
  5. 在启动应用时加入参数
    java -javaagent:jacocoagent.jar=includes=*,classdumpdir=classes,output=tcpserver,port=6888,address=127.0.0.1
  6. 进入下载的JaCoCo的zip文件中,路径jacoco-0.8.2\doc\examples\build下有ant构建时所需的build.xml文件,文件注释如下:(详细其他参数请参考:https://www.eclemma.org/jacoco/trunk/doc/ant.html)
<?xml version="1.0" ?>
<project name="wlytest" xmlns:jacoco="antlib:org.jacoco.ant" default="jacoco">
    <!--JaCoCo的安装路径-->
  <property name="jacocoantPath" value="./jacoco-0.8.2/lib/jacocoant.jar"/>
  <!--最终生成.exec文件的路径,JaCoCo就是根据这个文件生成最终的报告的-->
  <property name="jacocoexecPath" value="/root/.jenkins/workspace/root/.jenkins/jobs/wlytest-JaCoCo/jacoco.exec"/>
    <!--生成覆盖率报告的路径-->
  <property name="reportfolderPath" value="/root/.jenkins/workspace/root/.jenkins/jobs/wlytest-JaCoCo/report/"/>
  <!--远程tomcat服务或者应用的ip地址-->
  <property name="server_ip" value="127.0.0.1"/>
  <!--前面配置的远程tomcat服务或者应用打开的端口,要跟上面配置的一样-->
  <property name="server_port" value="6888"/>
  <!--源代码路径-->
  <property name="checkOrderSrcpath" value="/root/.jenkins/workspace/root/.jenkins/jobs/wlytest-JaCoCo/trunk/wlytest/" />
  <!--.class文件路径-->
  <property name="checkOrderClasspath" value="/root/.jenkins/workspace/root/.jenkins/jobs/wlytest-JaCoCo/wlytest/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="true"/>
  </target>
  
  <!--JaCoCo任务:
      根据前面配置的源代码路径和.class文件路径,
      根据dump后,生成的.exec文件,生成最终的html覆盖率报告。-->
  <target name="report">
      <delete dir="${reportfolderPath}" />
      <mkdir dir="${reportfolderPath}" />
      
      <jacoco:report>
          <executiondata>
              <file file="${jacocoexecPath}" />
          </executiondata>
              
          <structure name="JaCoCo Report">
              <group name="Check Order related">           
                  <classfiles>
                      <fileset dir="${checkOrderClasspath}" />
                  </classfiles>
                  <sourcefiles encoding="gbk">
                      <fileset dir="${checkOrderSrcpath}" />
                  </sourcefiles>
              </group>
          </structure>

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

以上配置关注路径问题。

Jenkins配置任务

重点关注构建步骤和构建后的步骤:


构建.png
构建后操作.png

构建后操作可视情况修改,以上完成。

效果
总体效果.png

后话:不是统计完就完事了,还有根据统计后的结果补充测试用例,提升覆盖率。当然也不是覆盖率很高就完事了,因为统计的是按代码行去统计,只表示执行过该路径而已。

相关文章

网友评论

      本文标题:Jenkins+JaCoCo实现系统集成测试覆盖率统计

      本文链接:https://www.haomeiwen.com/subject/urwpfqtx.html