为持久层编写单元测试
在 myUsers 程序,使用 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,其父类初始化了 Spring 的 ApplictionContext(来自 web/WEB-
INF/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 类添加 testSave 和 testAddAndRemove 方法,如下:
public void testSaveUser() throws Exception {