文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | firefox | WPS | 杀毒软件 | Picasa
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形图像 办公软件 媒体动画 精文荟萃 常用软件 网页编程 技术开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程J2EE/J2ME对J2EE中的DAO组件编写单元测试
精品推荐
特别推荐
·J2EE Web开发技术期待一次新的技术变革
·J2ME程序开发初学者快速入门的九大要点
·使用技巧:J2ME中程序优化的十个小方法
·RMS从入门到精通之一
·J2EE应用程序中SQL语句的自动构造方法
·解决J2EE系统应用性能问题常用优化项目
·J2EE实用技巧:提升JSP应用程序的绝招
·J2ME内存优
·J2ME简介
·J2EE技术
热点TOP10
·FC API(JSR 75)简单讲解
·3D数学知识简介
·从自定义字节数组创建图片
·用J2ME实现简单电子邮件发送功能
·通用联接框架(GCF)连接类型使用总结
·JBoss 文档(三) JBoss和JMS
·JBoss文档(二)??JBoss开发、打包、部署
·基于J2EE的Blog平台
·MIDP终端模拟之一:一个简单的模拟器MIDlet
·MIDP终端模拟之二:高级终端模拟
·经典飞机游戏代码S60
·走进JBoss (1)
·基于MIDP1.0实现通信录
·RMS高效编程指南
·Spring 系列:当 Hibernate 遇上 Spring
·介绍J2ME可选包WMA(JSR120)
·J2ME联网中采用序列化机制
·Spring 系列:Spring JMS 消息处理
·JBOSS4数据源配置大全
·J2ME可选包—PIM介绍

对J2EE中的DAO组件编写单元测试

日期:2007年8月21日 作者: 查看:[大字体 中字体 小字体]


  单元测试作为保证软件质量及重构的基础,早已获得广大开发人员的认可。单元测试是一种细粒度的测试,越来越多的开发人员在提交功能模块时也同时提交相应的单元测试。对于大多数开发人员来讲,编写单元测试已经成为开发过程中必须的流程和最佳实践。

  对普通的逻辑组件编写单元测试是一件容易的事情,由于逻辑组件通常只需要内存资源,因此,设置好输入输出即可编写有效的单元测试。对于稍微复杂一点的组件,例如Servlet,我们可以自行编写模拟对象,以便模拟HttpRequest和HttpResponse等对象,或者,使用EasyMock之类的动态模拟库,可以对任意接口实现相应的模拟对象,从而对依赖接口的组件进行有效的单元测试。

  在J2EE开发中,对DAO组件编写单元测试往往是一件非常复杂的任务。和其他组件不通,DAO组件通常依赖于底层数据库,以及JDBC接口或者某个ORM框架(如Hibernate),对DAO组件的测试往往还需引入事务,这更增加了编写单元测试的复杂性。虽然使用EasyMock也可以模拟出任意的JDBC接口对象,或者ORM框架的主要接口,但其复杂性往往非常高,需要编写大量的模拟代码,且代码复用度很低,甚至不如直接在真实的数据库环境下测试。不过,使用真实数据库环境也有一个明显的弊端,我们需要准备数据库环境,准备初始数据,并且每次运行单元测试后,其数据库现有的数据将直接影响到下一次测试,难以实现“即时运行,反复运行”单元测试的良好实践。

  本文针对DAO组件给出一种较为合适的单元测试的编写策略。在JavaEE开发网的开发过程中,为了对DAO组件进行有效的单元测试,我们采用HSQLDB这一小巧的纯Java数据库作为测试时期的数据库环境,配合Ant,实现了自动生成数据库脚本,测试前自动初始化数据库,极大地简化了DAO组件的单元测试的编写。
在Java领域,JUnit作为第一个单元测试框架已经获得了最广泛的应用,无可争议地成为Java领域单元测试的标准框架。本文以最新的JUnit 4版本为例,演示如何创建对DAO组件的单元测试用例。

  JavaEEdev的持久层使用Hibernate 3.2,底层数据库为mysql。为了演示如何对DAO进行单元测试,我们将其简化为一个DAOTest工程:
对DAO编写单元测试 图-1

  由于将Hibernate的Transaction绑定在Thread上,因此,HibernateUtil类负责初始化SessionFactory以及获取当前的Session:

 
 public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration()
.configure()
.buildSessionFactory();
}
catch(Exception e) {
throw new ExceptionInInitializerError(e);
}
}   public static Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
}

  HibernateUtil还包含了一些辅助方法,如:

 public static Object query(Class clazz, Serializable id);
public static void createEntity(Object entity);
public static Object queryForObject(String hql, Object[] params);
public static List queryForList(String hql, Object[] params);

  在此不再多述。

  实体类User使用JPA注解,代表一个用户:

  @Entity
@Table(name="T_USER")
public class User {
public static final String REGEX_USERNAME = "[a-z0-9][a-z0-9\\-]{1,18}[a-z0-9]";
public static final String REGEX_PASSWord = "[a-f0-9]{32}";
public static final String REGEX_EMAIL = "([0-9a-zA-Z]([-.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})"; private String username;     // 用户名
private String password;     // MD5口令

[1] [2] [3] [4] [5] [6] 下一页 




上一篇:MSN“悄悄话”功能保障用户隐私安全

下一篇:深度揭秘:黑客如何通过虚拟世界生财?

对J2EE中的DAO组件编写单元测试 相关文章:
·C/C++笔试、面试题目大汇总
·Quidway(R)系列路由器调试命令
·官方下载:XP SP3最新测试版
·苹果Powerbook G4最真实测试
·魔兽争霸3 测试版局域网联机指南 - 游戏秘籍
·计算机等级考试三级网络技术复习提纲(下)
·常用的网络测试命令
·和病毒再见 六款免费杀毒软件对比测试
·用Excel函数快速统计学生期中考试成绩
·教你如何调试CISCO路由器(上)
对J2EE中的DAO组件编写单元测试 相关软件:
·招聘面试技巧 视频教程
·《惠威试音碟》320 Kbps(上)
·电脑调试与维修(电脑维修高手成长教程)
·CAV试音碟MP3-320K 原版CD高品质转制
·壮志凌云黄金版 飞行射击游戏试玩
·全国专业技术人员计算机应用能力考试模拟
·发烧天碟PHILIPS- 耳机测试CD
·全国专业技术人员计算机应用能力考试模拟 V2.1
·测试声卡顶级MP3
·发烧试音天碟集

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn