2007-03-16
应用HSQLDB进行数据访问层测试
在测试数据访问层的DAO代码时,如果连接真实的数据库会导致产生一些测试数据。应用HSQLDB在内存中建立一个同结构的数据库用来测试是个好主意。下面就针对使用Ibatis的DAO代码进行测试。
1. 下载HSQLDB 的jar文件。
2. 建立一个数据库描述文件
其中testfixture是可以更改的。
3. 建立一个PersistenceFixture.java
相应的DaoConfig.java代码
4. 然后就可以取得Dao进行测试了
1. 下载HSQLDB 的jar文件。
2. 建立一个数据库描述文件
java 代码
- driver=org.hsqldb.jdbcDriver
- url=jdbc:hsqldb:mem:testfixture
- username=sa
- password=
3. 建立一个PersistenceFixture.java
java 代码
- package com.yaoyuan.max.persistence;
- import java.io.PrintWriter;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.util.ResourceBundle;
- import com.ibatis.common.jdbc.ScriptRunner;
- import com.ibatis.common.resources.Resources;
- import com.ibatis.dao.client.DaoManager;
- import com.yaoyuan.max.persistence.ibatis.DaoConfig;
- public class PersistenceFixture {
- private static final DaoManager daoManager;
- static {
- try {
- ResourceBundle resource = ResourceBundle.getBundle("com/yaoyuan/max/persistence/database");
- DaoConfig daoConfig = new DaoConfig(
- "com/yaoyuan/max/persistence/database.properties");
- daoManager = daoConfig.getDaomanager();
- Class.forName(resource.getString("driver"));
- Connection conn = DriverManager.getConnection(
- resource.getString("url"),
- resource.getString("username"),
- resource.getString("password"));
- try {
- ScriptRunner runner = new ScriptRunner(conn,true,true);
- runner.setErrorLogWriter(new PrintWriter(System.out));
- runner.setLogWriter(new PrintWriter(System.out));
- runner.runScript(Resources
- .getResourceAsReader("ddl/hsql/schema.sql"));
- } finally {
- conn.close();
- }
- } catch (Exception e) {
- throw new RuntimeException("Description. Cause: " + e, e);
- }
- }
- public static DaoManager getDaoManager() {
- return daoManager;
- }
- }
相应的DaoConfig.java代码
java 代码
- /**
- *
- */
- package com.yaoyuan.max.persistence.ibatis;
- import java.io.Reader;
- import java.util.Properties;
- import com.ibatis.common.resources.Resources;
- import com.ibatis.dao.client.DaoManager;
- import com.ibatis.dao.client.DaoManagerBuilder;
- /**
- * @author Yao Yuan
- *
- */
- public class DaoConfig {
- private final DaoManager daoManager;
- public DaoConfig(String propertyFilePath) {
- try {
- String resource = "com/yaoyuan/max/persistence/ibatis/dao.xml";
- Reader reader = Resources.getResourceAsReader(resource);
- Properties props = Resources.getResourceAsProperties(propertyFilePath);
- daoManager = DaoManagerBuilder.buildDaoManager(reader,props);
- } catch (Exception e) {
- e.printStackTrace();
- throw new RuntimeException(
- "Could not initialize DaoConfig. Cause: " + e);
- }
- }
- /**
- *
- * @return
- */
- public DaoManager getDaomanager() {
- return daoManager;
- }
- }
4. 然后就可以取得Dao进行测试了
java 代码
- (CategoryDao)PersistenceFixture.getDaoManager().getDao(CategoryDao.class);
- 10:35
- 浏览 (378)
- 评论 (0)
- 分类: O/R Mapping
- 相关推荐
发表评论
- 浏览: 4329 次

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Java调用.NET Web Service ...
call.setSOAPActionURI("http://tempuri.or ...
-- by e_ville -
Java调用.NET Web Service ...
参数传入的都没有 我现在遇到的问题是 参数无法传入~
-- by javaman1982 -
Java调用.NET Web Service ...
语法都出现错误了,而且导入的包也没有说明是哪些包。 麻烦版主再帖多次,最好给点注 ...
-- by linyiteng1220 -
Java调用.NET Web Service ...
老大,你注释都没有,我们这些新手看不懂啊
-- by xiaoqulai






评论排行榜