之前系统的持续集成覆盖率工具使用的是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. 设置UCHome注册登陆退出的跳转页自定义

    UCHome 默认注册.登录成功后跳转到 http://www.xxx.com/home/space.php?do=home 退出后会跳转到站点的首页,即 http://www.xxx.com/hom ...

  2. 【Python】【爬虫】如何学习Python爬虫?

    如何学习Python爬虫[入门篇]? 路人甲 1 年前 想写这么一篇文章,但是知乎社区爬虫大神很多,光是整理他们的答案就够我这篇文章的内容了.对于我个人来说我更喜欢那种非常实用的教程,这种教程对于想直 ...

  3. python装饰器的应用案例

    目录 一.过程编程 二.面向装饰器和函数的编程 三.二的加强版 一.过程编程 (一)需求:打印菱形 1.空格.*号组成的菱形 2.输入菱形上半部分的行数即可打印 3.支持循环输入 (二)代码 from ...

  4. Centos7 Zabbix3.2安装

    实验环境: 阿里云 [zabbix@miyan ~]$ cat /etc/redhat-release CentOS Linux release (Core) 不得不说,官方文档确实强大 1.官方文档 ...

  5. Django中间件的5种自定义方法

    阅读目录(Content) Django中间件 自定义中间件 中间件(类)中5种方法 中间件应用场景 回到顶部(go to top) Django中间件 在http请求 到达视图函数之前   和视图函 ...

  6. Python 无穷大与NaN

    想创建或测试正无穷.负无穷或NaN(非数字) 的浮点数 Python 并没有特殊的语法来表示这些特殊的浮点值,但是可以使用float() 来创建它们.比如: >>> a = floa ...

  7. C++ string和C风格字符串

    https://msdn.microsoft.com/en-us/library/syxtdd4f.aspx#basic_string__replace If you need to convert ...

  8. ThinkPHP5 快速入门文档

    一. 5.0版本采用模块化的设计架构,默认的应用目录下面只有一个index模块目录,如果我要添加新的模块可以使用控制台命令来生成. 切换到命令行模式下,进入到应用根目录并执行如下指令: php thi ...

  9. LINUX实践--ELF分析

    一.ELF文件头(定义在/usr/include/elf.h)中 二.实践部分 第一行 对应e_ident[EI_NIDENT]:实际表示内容为7f45 4c46 0101 0100 0000 000 ...

  10. linux及安全第七周总结——20135227黄晓妍

    实验部分 首先clone最新的menu 我们可以看到,test.c里多了一个exec的功能,它的代码和fork基本一致,多了一项加载hello rootfs也有一些变化 执行一下exec 让我们启动一 ...