EclEmma简介

现在IT开发人员比以往任何时候都更加关注测试的重要性,没有经过良好测试的代码更容易出问题。在极限编程中,测试驱动开发已经被证明是一种有效提高软件质量的方法。在测试驱动的开发方式中,软件工程师在编写功能代码之前首先编写测试代码,这样能从最开始保证程序代码的正确性,并且能够在程序的每次演进时进行自动的回归测试。测试对于软件产品的成败起着至关重要的作用,在极限编程领域,甚至有人提议任何未经测试的代码都应该自动从发布的产品中删除。作者并不确信这个观点是正确的,但是测试本身的质量确实是一个需要高度关注的问题。测试的覆盖率是测试质量的一个重要指标,我们需要工具来帮助我们进行对软件测试覆盖的考察。

EclEmma就是这样一个能帮助开发人员考察测试覆盖率的优秀的Eclipse开源插件。EclEmma在覆盖测试领域是如此的优秀,以致于它在过去不久的2006年成为了EclipseCommunityAwardsWinners决赛选手。虽然最后EclipseCheckstylePlugin取得了BestOpenSourceEclipse-basedDevelopertool的称号,但我们也可以由此看到EclEmma对开发人员的帮助是巨大的(EclipseCommunityAward的具体信息可以参阅参考资源)。

提到EclEmma首先就要说到著名的Java覆盖测试工具Emma。Emma是一个在SourceForge上进行的开源项目(参阅参考资源)。从某种程度上说,EclEmma可以看作是Emma的一个图形界面。在本文的参考文献中,可以看到专门讲述使用Emma的技术文章。

Emma的作者开发Emma之初,程序员已经有了各种各样优秀的开源Java开发工具。举例来说,我们有优秀的集成开发环境Eclipse,有开源的JDK,有单元测试工具JUnit,有Ant这样的项目管理工具,还可以用CVS或SubVersion来进行源代码版本的维护。当时看来,也许唯一缺少的就是一个开源的覆盖测试工具了。Emma就是为了填补这项空白而生的。现在的情况已经和Emma诞生的时候不一样的。时至今日,已经有了不少的覆盖测试工具。例如Coverlipse是一个基于Eclipse的覆盖测试插件。其他还有Cobertura、Quilt和JCoverage等。但是Emma具有一些非常优秀的特性使得它更适合被广泛的使用。和Coverlipse等工具比起来,Emma是开源的,同时它对应用程序执行速度的影响非常小。

EclEmma的出现弥补了Emma用户一个大的遗憾——缺乏图形界面以及对集成开发环境的支持。将Eclipse和Emma这两个在各自领域最为优秀的工具结合起来,这就是EclEmma为我们提供的。接下来,一起看看EclEmma为开发人员提供了什么。

4.4.2  添加EclEmma支持

在官方网站http://sourceforge.net/projects/eclemma/ 下载EclEmma压缩包。

图1 EclEmma压缩包

解压eclemma-2.3.3.zip文件,得到plugins文件夹和features文件夹。

图2  解压ZIP文件

将解压后的文件,拷贝到MyEclipse安装目录下的dropins即可,    运行MyEclipse(如果已经运行,请重启MyEclipse),即可集成EclEmma成功。

笔者发现该方法,是最好的方法,比在线安装和本地逐个文件夹拷贝要好了N多倍!!!!

在项目右键,出现如下所示的"Coverage as表示已经成功了",或者工具栏出现快捷图标也是成功了。

 

/******************************下面是针对成绩判断做的JUnit+EclEmma的综合测试案例******************************/

package com.aaa.vo;
/*** 成绩类;* @author 张晨光老师 */
public class Grade {public String getLevel(int score){String result="";if(score<60){result="不及格";}else if(score<70){result="及格";}else if(score<80){result="中等";}else if(score<90){result="良好";}else if(score<=100){result="优秀";}return result;}
}
package com.aaa.test;
/**测试类* @author 张晨光老师*/
import java.util.Scanner;
import junit.framework.TestCase;
import com.aaa.vo.Grade;
public class TestGrade extends TestCase {//1.私有对象;Grade grade=new Grade();//public void testGetLevel(){int x;System.out.println("请输出一个数字");Scanner sc=new Scanner(System.in);x=sc.nextInt();assertEquals("及格",grade.getLevel(x));}
}

然后在项目,点击右键选择"Coverage as"-->Junit Test,这时候出来控制台界面,需要用户输入数字

Cpverage 界面如图所示:

Grade类的覆盖测试图:

TestGrade类的覆盖测试图:

在Coverage 视图界面,选择导出,以网页报表的格式导出。

JUnit+EclEmma进行覆盖测试相关推荐

  1. 使用 EclEmma 进行覆盖测试

    (1)使用 EclEmma 进行覆盖测试 (2)单元测试工具Junit教程和测试覆盖率工具EclEmma教程 最后可以查看代码覆盖率,很低呀,, 添加了几个单元测试后,提高了4.5% 转载于:http ...

  2. 提高 Java 代码质量

    高质量代码中往往缺陷更少!确保高的 Java 代码质量有两个步骤:尽早并经常地编写各个层次的测试用例,以及持续的监测质量状况.那么我们又该如何实践呢?本专题汇集了大量来自代码质量专家们的专业经验.最佳 ...

  3. 软件测试之图覆盖(作业3)

    上周我们学习了Junti和图覆盖的一些基础知识,为了便于更深入了解,让我们一起来实战一下吧. 一.代码及问题 /*** Finds and prints n prime integers* Jeff ...

  4. 软件测试(黑盒白盒)

    软件=程序+数据库+文档+服务 软件测试: 使用人工或自动手段来运行或测试某个系统的过程,目的在于检验其是否满足规定的需要,或是弄清楚预期结果与实际结果之间的差别 软件测试目的:以最小的人力物力和时间 ...

  5. GitHub上整理的一些工具【转载】

    技术站点Hacker News:非常棒的针对编程的链接聚合网站Programming reddit:同上MSDN:微软相关的官方技术集中地,主要是文档类infoq:企业级应用,关注软件开发领域OSCh ...

  6. (转)✈工欲善其事,必先利其器✔™

    附:我在GitHub上整理的一些资料 技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 i ...

  7. 程序员整理的各种不错的工具

    技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...

  8. 软件开发整理的一些工具

    技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 ...

  9. 成为专业程序员路上用到的各种优秀资料、神器及框架

    撸了今年阿里.头条和美团的面试,我有一个重要发现.......>>> 前言(关注有红包http://t.cn/RHuOTnd) 成为一名专业程序员的道路上,需要坚持练习.学习与积累, ...

最新文章

  1. [译]php和curl_multi_exec
  2. 80后游戏美术:这十年总在挣扎着做些更有意思的事儿
  3. 快春运了,做个火车余票查询接口,余票来源12306,图是百度地图
  4. 数据表现层文件命名参考
  5. 洛谷 - P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并(树上差分+线段树合并)
  6. pythonsqlite3模糊_Python编写通讯录通过数据库存储实现模糊查询功能
  7. android jpush json,发送了正确的JPush json却报1002
  8. gnss单频软件接收机应用与编程_GNSS/GPS RTK定位 (手机,无人车定位,无人驾驶,因子图优化)...
  9. php日期数组,关于php日期数组的用法汇总
  10. Giter8 -- 把项目布局模板放到 GitHub 上
  11. Java爬虫开发总结
  12. 乌龟git安装和使用
  13. Redis入门指南笔记
  14. javascript 纯前端实现汉字转拼音 —— pinyin-pro 库
  15. Email营销相关名词解释:PEM,UCE,Opt-in,Double Opt-In,Opt-out
  16. 古人教你怎样识人不走眼
  17. 冰箱变革成AI科技营养管家 COLMO 成功占位营养及高定赛道
  18. 将Excel转为实体集合中注意问题
  19. Pomelo Client
  20. OpenCV(C++)图像处理基础04:图像混合(线性混合操作)

热门文章

  1. java安全编码指南之:对象构建
  2. 循环首次适应算法_面向6G的极化编码链路自适应技术
  3. Python3之configparser模块
  4. php 获取路由参数,路由参数 · ThinkPHP5.0完全开发手册 · 看云
  5. 内网通免广告_3D打印进军广告发光字领域,成为名副其实的智能打印工厂
  6. html让布局垂直居中,css垂直居中布局总结
  7. android 无appid分享_App ID 和Bundle ID 有什么不同?ios面试攻克篇(六)
  8. 非极大值抑制_【计算机视觉——RCNN目标检测系列】三、IoU与非极大抑制
  9. jsp连接mysql数据库代码_JSP连接MySQL数据库代码
  10. as3转换为html5,AS3和HTML5 - 使用正则表达式将字符串解析为数组