对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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |