下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第第页软件测试之对DAO编写单元测试软件测试之对DAO编写单元测试
发表于:2023-04-03来源::点击数:标签:软件测试单元DAOdao编写
单元测试作为保证软件质量及重构的基础,早已获得广大开发人员的认可。单元测试是一种细粒度的测试,越来越多的开发人员在提交功能模块时也同时提交相应的单元测试。对于大多数开发人员来讲,编写单元测试已经成为开发过程中必须的流程和最佳实践。对
单元测试作为保证软件质量及重构的基础,早已获得广大开发人员的认可。单元测试是一种细粒度的测试,越来越多的开发人员在提交功能模块时也同时提交相应的单元测试。对于大多数开发人员来讲,编写单元测试已经成为开发过程中必须的流程和最佳实践。对普通的逻辑组件编写单元测试是一件容易的事情,由于逻辑组件通常只需要内存资源,因此,设置好输入输出即可编写有效的单元测试。对于稍微复杂一点的组件,例如Servlet,我们可以自行编写模拟对象,以便模拟HttpRequest和HttpResponse等对象,或者,使用EasyMock之类的动态模拟库,可以对任意接口实现相应的模拟对象,从而对依赖接口的组件进行有效的单元测试。
在J2EE开发中,对DAO组件编写单元测试往往是一件非常复杂的任务。和其他组件不通,DAO组件通常依赖于底层数据库,以及JDBC接口或者某个ORM框架(如Hibernate),对DAO组件的测试往往还需引入事务,这更增加了编写单元测试的复杂性。虽然使用EasyMock也可以模拟出任意的JDBC接口对象,或者ORM框架的主要接口,但其复杂性往往非常高,需要编写大量的模拟代码,且代码复用度很低,甚至不如直接在真实的数据库环境下测试。不过,使用真实数据库环境也有一个明显的弊端,我们需要准备数据库环境,准备初始数据,并且每次运行单元测试后,其数据库现有的数据将直接影响到下一次测试,难以实现“即时运行,反复运行”单元测试的良好实践。
本文针对DAO组件给出一种较为合适的单元测试的编写策略。在JavaEE开发网的开发过程中,为了对DAO组件进行有效的单元测试,我们采用HSQLDB这一小巧的纯Java数据库作为测试时期的数据库环境,配合Ant,实现了自动生成数据库脚本,测试前自动初始化数据库,极大地简化了DAO组件的单元测试的编写。
在Java领域,JUnit作为第一个单元测试框架已经获得了最广泛的应用,无可争议地成为Java领域单元测试的标准框架。本文以最新的JUnit4版本为例,演示如何创建对DAO组件的单元测试用例。
JavaEEdev的持久层使用Hibernate3.2,底层数据库为MySQL。为了演示如何对DAO进行单元测试,我们将其简化为一个DAOTest工程:
由于将Hibernate的Transaction绑定在Thread上,因此,HibernateUtil类负责初始化SessionFactory以及获取当前的Session:
publicclassHibernateUtil{
privatestaticfinalSessionFactorysessionFactory;
static{
try{
sessionFactory=newAnnotationConfiguration()
.configure()
.buildSessionFactory();
}
catch(Exceptione){
thrownewExceptionInInitializerError(e);
}
}?publicstaticSessiongetCurrentSession(){
returnsessionFactory.getCurrentSession();
}
}HibernateUtil还包含了一些辅助方法,如:
publicstaticObjectquery(Classclazz,Serializableid);
publicstaticvoidcreateEntity(Objectentity);
publicstaticObjectqueryForObject(Stringhql,Object
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高职生态保护(保护方法)试题及答案
- 2025年大学化学工程与工艺(化工仪表及自动化)试题及答案
- 2025年中职戏剧表演(戏剧演出)试题及答案
- 2025年高职热能与发电工程(锅炉运行)试题及答案
- 河北省沧州市2025年八年级上学期期末考试物理试题附答案
- 2026年都江堰市玉堂街道卫生院拟面向社会公开补员招聘编外人员备考题库及完整答案详解1套
- 养老院老人生活照顾标准制度
- 养老院老人入住体检制度
- 会议后续跟踪与效果评估制度
- 2026年市场营销岗位综合能力测评题库含答案
- 2025年卫健委编制考试题及答案
- 2025年福建省厦门中考模拟预测地理试题
- 涉爆粉尘专项知识培训课件
- 环保企业污水处理标准操作规程
- 高危孕妇五色管理课件
- 安全总监先进个人材料范文
- 病案委员会课件
- GB/T 45816-2025道路车辆汽车空调系统用制冷剂系统安全要求
- 微细粒辉钼矿高效捕收剂分子设计与浮选性能研究
- GB/T 241-2025金属材料管液压试验方法
- 刚新修订《治安管理处罚法》培训
评论
0/150
提交评论