当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

对J2EE中的DAO组件编写单元测试[Java编程]

赞助商链接



  本文“对J2EE中的DAO组件编写单元测试[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

单元测试作为保证软件质量及重构的底子,早已得到广大开辟人员的承认.单元测试是一种细粒度的测试,越来越多的开辟人员在提交功效模块时也同时提交呼应的单元测试.关于大大都开辟人员来说,编写单元测试已经成为开辟历程中必须的流程和最佳实践.

对普通的逻辑组件编写单元测试是一件简单的事情,由于逻辑组件普通只需求内存资源,因此,设置好输入输出便可编写有效的单元测试.关于略微复杂一点的组件,比方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工程:

由于将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);

在此不再多述.


  以上是“对J2EE中的DAO组件编写单元测试[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>对J2EE中死锁问题的研究</b>
  • 对J2EE中的DAO组件编写单元测试
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .