在开发过程中,我们应该养成编写本地单元测试用例的好习惯,甚至做到测试驱动开发。EclEmma是Eclipse的一个插件,是一款测试用例的代码覆盖率统计工具,能明确到哪一行在测试过程中被调用到了。这里不仅仅是单元测试,部署到测试环境的集成测试也可以统计。下面来看下怎么使用EclEmma。

  首先说下安装。作为最方便莫过于直接在Eclipse中点击菜单栏的Help -> Eclipse Marketplace -> 在Find输入框中敲"EclEmma" -> 点击放大镜,直接找到"EclEmma Java Code Coverage" -> 点击Install按钮进行插件下载安装。

  安装好后在代码右击鼠标,应该会出现一栏"Coverage As"用于执行Junit、配置覆盖率统计项。现在假设我们已经用Junit写好了一个单元测试类,右击该类 -> 选择Coverage As -> 点击JUnit Test,执行该Junit用例,跑完后会出现代码覆盖率统计窗口Coverage,里面会显示各项指标,包括覆盖率百分比,已覆盖指令数,未覆盖指令书,总指令数。点开Element项,可以跟踪到具体每一个类的覆盖情况,被覆盖代码行会呈现绿色,未覆盖的呈现红色。可以把单元测试代码覆盖率导出,右击Coverage窗口空白处 -> 选择Export Session -> 选择导出文件格式和路径 -> 点击Finish。

  如果想在环境上跑后统计覆盖率,需要借助jacoco,在对应的tomcat服务器上部署jacoco。先到http://eclemma.org/jacoco/index.html下载最新的jacoco压缩包,上传到对应测试服务器,通过unzip命令解压jacoco压缩包。注意安装jacoco时,需要关闭tomcat。配置tomcat的catalina.sh文件

JAVA_OPTS="$JAVA_OPTS -javaagent:/home/wlf/jacoco-0.7.10/lib/jacocoagent.jar=includes=cn.wlf.*,output=file,append=false,destfile=/home/wlf/jacoco.exec"

  其中includes表示针对指定的class进行覆盖率数据收集;

  append=true/false:每一次收集的覆盖率数据是追加还是替换,不设置默认为true;

  output标识dump出来的覆盖率数据文件形式,output=file/tcpserver/tcpclient:分别为file,tcpserver和tcpclient,file是比较简单的方式,tcp的方式可支持自行开发获取覆盖率数据的工具。不设置默认是file;

  destfile= home/wlf/jacoco.exec是生成覆盖率文件的路径。

  以上配置好后启动tomcat,跑完用例后会在destfile配置的目录下生成jacoco.exec文件,把这个文件取出到本地,导入到eclipse的coverage中即可看代码的测试覆盖率。怎么导入呢?在eclipse的菜单项点击Windows -> Show Views-> Java -> Coverage,在空白处右击,选Import Session -> 在Data File处选择本地存放的jacoco.exec文件 -> 点击Next,选择对应的源代码目录 -> 最后点击Finish。

Eclipse使用EclEmma看单元测试的代码覆盖率的更多相关文章

  1. 单元测试系列之一:如何使用JUnit、JaCoCo和EclEmma提高单元测试覆盖率

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!   原文链接:http://www.cnblogs.com/zishi/p/6726664.html -----如 ...

  2. Jenkins构建Android项目持续集成之单元测试及代码覆盖率

    单元测试 在软件开发中一直在推崇TDD(测试驱动开发),但是一直不能被有效的执行或者并不是真正的测试驱动开发(先开发后写单元测试),因为我们懒!而Android开发又是大多应用层面的开发,很多都是和视 ...

  3. VS2013单元测试及代码覆盖率分析--Xunit

    1,Javaweb中有jmeter.jacoco.ant.badboy等集成测试代码覆盖率的方式,C#代码的覆盖率怎么测试呢?VS2013的IDE上本身并未集成测试的工具,以下讲解VS2013中C#代 ...

  4. Java开发工具IntelliJ IDEA单元测试和代码覆盖率图解

    原文 http://www.cnblogs.com/xiongmaopanda/p/3314660.html Java开发工具IntelliJ IDEA使用教程:单元测试和代码覆盖率 本文将展示如何使 ...

  5. Eclipse项目里面看源码和文档

    Eclipse项目里面看源码 1.新建项目列表 2.进入struts2-core-2.3.20.jar,双击之后,看不到源码 3.右键struts2-core-2.3.20.jar,选择propert ...

  6. [Azure Devops] 获取单元测试的代码覆盖率

    1. 获取代码覆盖率 上一篇文章里,我们在 Pipeline 中插入一个单元测试并把所有单元测试都通过作为 Pipeline 通过的硬性要求.除此以外,我们还可以获取单元测试的代码覆盖率,用作衡量代码 ...

  7. 【Java】eclipse中的JUnit单元测试

    eclipse中的JUnit单元测试 步骤: 选中当前工程 - 右键选择:build path - add libraries - JUnit 4 - 下一步 创建Java类,进行单元测试. 此时的J ...

  8. 单元测试系列:如何使用JUnit+JaCoCo+EclEmma完成单元测试

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢!   原文链接:http://www.cnblogs.com/zishi/p/6726664.html -----如 ...

  9. Android -------- eclipse平台上的单元测试框架

    eclipse平台上单元测试框架 继承android.test.AndroidTestCase类 清单文件中设置 设置指令集,与application标签同级 <instrumentation ...

随机推荐

  1. [洛谷3041]视频游戏的连击Video Game Combos

    题目描述 Bessie is playing a video game! In the game, the three letters 'A', 'B', and 'C' are the only v ...

  2. jsp select multiple

    //File: index.html<HTML>    <HEAD>        <TITLE>Submitting Multiple Selection Sel ...

  3. Linux下 split 划分文件 和 cat 合并文件

    split 命令 split 命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等. 选项 -b:值为每一输出档案的大小,单位为 byte. -C:每一 ...

  4. Hibernate -- Session的主键生成策略

    *缓存:集合--集合放置到内存中       *  只要session存在 session的一级缓存肯定存在.       *当执行查询时,以oid为oid=1条件到session的一级缓存中查找oi ...

  5. Java中foreach用法,增强型的for循环的样例和解释

    JDK1.5加入的增强for和循环. 这段时间又回顾了一下JAVA基础 foreach语句使用总结 增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集 ...

  6. Pandas窗口函数

    为了处理数字数据,Pandas提供了几个变体,如滚动,展开和指数移动窗口统计的权重. 其中包括总和,均值,中位数,方差,协方差,相关性等. 下来学习如何在DataFrame对象上应用上提及的每种方法. ...

  7. HYSBZ - 2301 莫比乌斯反演

    链接 题解:直接用公式算,用容斥来减掉重复计算的部分 但是我犯了一个非常sb的错误,直接把abcd除k了,这样算a-1的时候就错了,然后举的例子刚好还没问题= = ,结果wa了好几发 //#pragm ...

  8. 安装Charles报错

    去年用的是charles4.1.2版本,今年这个版本的安装包始终安装报错,不管公司电脑还是自己电脑........ 我的解决方案很Lower的.......... 登录Charles官网:https: ...

  9. POJ 1062 限制点

    http://poj.org/problem?id=1062 昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 50 ...

  10. Kestrel 服务器部署多站点问题 (nginx 反向代理)

    Kestrel 作为微软的跨平台 web 服务器,有些地方用的好不是很熟. 作为一款嵌套到 dll 中的进程级 web 服务器,在同一台服务器上部署多站点确实还存在一点问题. 今天采用 nginx 做 ...