当前位置: 首页 > 图文教程 > Java技术 > 数据库持久层 > 数据库持久层:为持久层编写单元测试

数据库持久层
持久层设计和数据库设计的原则
关于php的数据库持久层设计
在 SCA Module 中使用 Hibernate 框架实现数据持久层
流行持久层框架对数据库操作
Hibernate持久层操作
hibernate 的 log4j.properties 配置文件
Hibernate的映射类型 hibernate mysql映射类型
hibernate的findByExample
持久化对象PO
终于用hibernate把数据持久层写完了 小结下遇到的一些问题
理解PO类在数据层和VO类在逻辑层的区别
hibernate中使用session之一
hibernate映射到mysql数据库时应该注意的几点
在Struts和Hibernate之间搭起桥梁
Hibernate技术文章-基本配置和写法
Hibernate技术
Hibernate详解
Java数据库编程中的技巧
Hibernate 实体关联关系映射----总结
Hibernate中二级缓存的配置和使用

数据库持久层:为持久层编写单元测试


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 340 ::
收藏到网摘: n/a

下面我们为持久层编写单元测试,使用Hibernat作为持久层。Hinbernate是一个O/R映像框架,用来关联java对象和数据库中的表(tables)。它使得对象的CRUD操作变得非常简单,Spring结合了Hibernate变得更加容易。从Hibernate转向Spring+Hibernate会减少75%的代码。这主要是因为,ServiceLocater和一些DAOFactory类的废弃,spring的实时异常代替了Hibernate的检测

式的异常。写一个单元测试有助于规范 UserDAO接口。为UserDAO写一个JUint测试程序,要完成以下几步:

1.test/org/appfuse/dao下新建一个UserDAOTest.java类。它继承了同一个包中的

BaseDAOTestCase,其父类初始化了SpringApplictionContext(来自web/WEBINF/

applictionContext.xml),以下是JUnit测试的代码。

package org.appfuse.dao;

// use your IDE to handle imports

public class UserDAOTest extends BaseDAOTestCase {

private User user = null;

private UserDAO dao = null;

protected void setUp() throws Exception {

log = LogFactory.getLog(UserDAOTest.class);

dao = (UserDAO) ctx.getBean("userDAO");

}

protected void tearDown() throws Exception {

dao = null;

}

public static void main(String[] args) {

junit.textui.TestRunner.run(UserDAOTest.class);

}

}

这个类还不能编译,因为还没有UserDAO 接口。在这之前,来写一些来验证User

CRUD操作。

2.UserDAOTest类添加testSavetestAddAndRemove方法,如下:

public void testSaveUser() throws Exception {

user = new User();

user.setFirstName("Rod");

user.setLastName("Johnson");

dao.saveUser(user);

assertTrue("primary key assigned", user.getId() != null);

log.info(user);

assertTrue(user.getFirstName() != null);

}

public void testAddAndRemoveUser() throws Exception {

user = new User();

user.setFirstName("Bill");

user.setLastName("Joy");

dao.saveUser(user);

assertTrue(user.getId() != null);

assertTrue(user.getFirstName().equals("Bill"));

if (log.isDebugEnabled()) {

log.debug("removing user...");

}

dao.removeUser(user.getId());

assertNull(dao.getUser(user.getId()));

}

从这些方法中可以看到,你需要在UserDAO创建以下方法:

saveUser(User)

removeUser(Long)

getUser(Long)

getUsers() (返回数据库的所有用户)

3.src/org/appfuse/dao目录下建一个名为UserDAO.java类的,输入以下代码:

tips:如果你使用eclipse,idea 之类的IDE,左边会出现在一个灯泡,提示类不存在,可以

即时创建。

package org.appfuse.dao;

// use your IDE to handle imports

public interface UserDAO extends DAO {

public List getUsers();

public User getUser(Long userId);

public void saveUser(User user);

public void removeUser(Long userId);

}

4.src/org/appfuse/model下建一个User.java文件,添加几个成员变量:

id,firstName,lastName,如下。

package org.appfuse.model;

public class User extends BaseObject {

private Long id;

private String firstName;

private String lastName;

/* 用你熟悉的IDE来生成getterssettersEclipse中右击> Source -> Generate Getters

and Setters */

}

注意,你继承了BaseObject 类,它包含几个有用的方法:toString(),equlas(),hasCode(),

后两个是Hibernate必须的。建好User后,用IDE打开UserDAOUserDAOTest两个类,

优化导入。