之前系统的持续集成覆盖率工具使用的是cobetura,使用的过程中虽然没什么问题,但感觉配置比较麻烦,现在准备改用jacoco这个覆盖率工具来代替它。接下来我介绍一下jenkins配置jacoco,并且在sonar显示单元测试和集成测试覆盖率的过程。

用jacoco来实现单元测试的覆盖率比较简单,在ant脚本中先增加下面的任务:

build.xml
1
2
3
<taskdef uri="antlib:org.jacoco.ant" resource="org/jacoco/ant/antlib.xml">
<classpath path="${basedir}/jacoco_lib/jacocoant.jar" />
</taskdef>

这里要引入jacoco的jar包jacocoant.jar,增加了这个命令之后,将原有的单元测试任务用 jacoco:coverage包括起来,实例代码如下:

build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<target name="unitTest" depends="test_compile">
<mkdir dir="${junit.dir}"/>
<jacoco:coverage destfile="${basedir}/ut.exec">
<junit fork="true" forkmode="once" printsummary="on" failureproperty="unit.test.failure">
<classpath>
<pathelement location="${build.class}"/>
<fileset dir="${build.lib.dir}"/>
</classpath> <formatter type="xml"/>
<batchtest todir="${junit.dir}">
<fileset dir="${src.test.dir}">
<include name="**/*Test.java"/>
</fileset>
</batchtest>
</junit>
</jacoco:coverage>
    <!-- 其他内容 -->
</target>

jacoco:coverage的destfile参数是指生成的覆盖率文件路径,不写默认文件名为jacoco.exec。另外在forkmode这个参数设置为once,可以提高你的单元测试的执行效率。

这样跑完单元测试后,就会在指定路径下生成覆盖率文件ut.exec(或默认的jacoco.exec,在工程根目录下)。

如果要在本地生成jacoco的覆盖率报告,可以增加如下任务:

build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<target name="jacocoReport">
<delete dir="${basedir}/jacoco"/>
<mkdir dir="${result.jacoco.report.dir}/ut"/>
<jacoco:report>
<executiondata>
<file file="${basedir}/ut.exec"/>
</executiondata> <structure name="jacoco_demo">
<classfiles>
<fileset dir="${build.dir}"/>
</classfiles>
<sourcefiles encoding="UTF-8">
<fileset dir="${src.dir}"/>
</sourcefiles>
</structure>
<html destdir="${result.jacoco.report.dir}/ut"/>
</jacoco:report>
</target>

生成覆盖率报告需要覆盖率文件(exec)、源码、编译后的class文件。这里导出的格式是html,还有xml和cvs 2种格式可以导出,具体参考jacoco:report

注意,这里的class文件和exec文件必须用同一个jvm执行,如果是用JVM A来编译class文件,然后用JVM B来生成覆盖率文件,生成出来的报告覆盖率会为0%。这一点对生成集成测试的覆盖率特别重要。

在jenkins和sonar中集成jacoco(一)--使用jacoco收集单元测试的覆盖率的更多相关文章

  1. 在jenkins和sonar中集成jacoco(四)--在sonar中集成jacoco

    首先要得到之前的单元测试和集成测试的覆盖率文件,还有对应的class文件以及单元测试的覆盖率报告,材料准备齐全之后,使用如下命令: build.xml 1 2 3 4 5 6 7 8 9 10 11 ...

  2. 在jenkins和sonar中集成jacoco(二)--在jenkins中生成jacoco覆盖率报告

    先要在jenkins上安装jacoco的插件,安装完成之后在job的配置项中可以增加这个选项: 第一个录入框是你的覆盖率文件(exec),第二个是class文件目录,第三个是源代码文件目录. 配置好了 ...

  3. 在jenkins和sonar中集成jacoco(三)--使用jacoco收集集成测试的覆盖率

    我们系统使用weblogic做服务器,集成测试框架使用的是junit+selenium. 首先,要把jacoco的jacocoagent.jar包放到部署应用的服务器上,接着在系统服务的JAVA_OP ...

  4. Jenkins集成jacoco收集单元测试覆盖率

    Jenkins集成jacoco收集单元测试覆盖率 2020-02-28 目录 0 整体思路1 Jenkins创建JacocoIntegrateTestDemo项目2 配置源码管理3 配置Build4 ...

  5. jenkins中集成commander应用

    jenkins中集成commander应用 jenkins 集成测试 promotion 最近参加公司的集成测试平台的开发,在开发中遇到了不少问题,两个星期的迭代也即将完成,在这也用这篇博客记录下开发 ...

  6. Jenkins中集成jmeter-maven插件

    转自:http://my.oschina.net/u/1377774/blog/168969 目录[-] 第一步.先在maven工程中单独使用jmeter-maven插件 0.环境 1.在POM.xm ...

  7. Jenkins+Gradle+Sonar进行Java项目代码分析

    Jenkins+Maven+Sonar与Jenkins+Gradle+Sonar配置方法很相似,区别就是Java项目所用的编译工具不同,一个是maven,一个是gradle 使用maven编译工具的可 ...

  8. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  9. jenkins, ant, pmd持续集成

    http://pmd.sourceforge.net/pmd-5.0.3/ant-task.html 在jenkins , ant , pmd进行集成的时候,build.xml模板如下,在网上找了一些 ...

随机推荐

  1. python通过os.walk() 遍历出多级目录下所有文件绝对路径

    代码如下 将遍历出来的路径全部添加到列表中: def get_all_abs_path(source_dir): path_list = [] for fpathe, dirs, fs in os.w ...

  2. mysql数据库建模Navicat

    用Navicat制作ER图及与SQL互相转化 http://wangbaiyuan.cn/sql-and-use-navicat-to-make-er-diagram-and-interactive. ...

  3. python 类高级语法 静态方法

    通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方 ...

  4. 10.numpy基本用法

    参考: https://blog.csdn.net/sinat_32547403/article/details/54017551

  5. Flask系列(六)Flask实例化补充及信号

    一.实例化补充 instance_path和instance_relative_config是配合来用的. 这两个参数是用来找配置文件的,当用app.config.from_pyfile('setti ...

  6. Spark UI (基于Yarn) 分析与定制

    转载自:https://yq.aliyun.com/articles/60194 摘要: 这篇文章的主旨在于让你了解Spark UI体系,并且能够让你有能力对UI进行一些定制化增强.在分析过程中,你也 ...

  7. eclipse引入httpServlet源码

    eclipse引入httpServlet源码 展开Apache Tomcat v7.0[Apache Tomcat v7.0] -> servlet-api.jar 找到 -> http ...

  8. hdu1700 Points on Cycle

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=1700 题目: Points on Cycle Time Limit: 1000/1000 MS ...

  9. echarts 不同区域背景色不同 废了我一天的时间

    var result = echarts.init(document.getElementById('result')); var option1 = { title: { text: '设备阶段故障 ...

  10. 异常来自HRESULT:0x80070422

    今天同事使用一个用VB.NET2008开发的应用程序时提示“出现了下列应用程序错误:无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动.(异常来自HRESULT:0x80070422)”   ...