`
yaoyuan
  • 浏览: 26271 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

应用HSQLDB进行数据访问层测试

阅读更多
在测试数据访问层的DAO代码时,如果连接真实的数据库会导致产生一些测试数据。应用HSQLDB在内存中建立一个同结构的数据库用来测试是个好主意。下面就针对使用Ibatis的DAO代码进行测试。

1. 下载HSQLDB 的jar文件。
2. 建立一个数据库描述文件
java 代码
  1. driver=org.hsqldb.jdbcDriver  
  2. url=jdbc:hsqldb:mem:testfixture  
  3. username=sa  
  4. password=  
    其中testfixture是可以更改的。

3. 建立一个PersistenceFixture.java
java 代码
 
  1. package com.yaoyuan.max.persistence;  
  2.   
  3. import java.io.PrintWriter;  
  4. import java.sql.Connection;  
  5. import java.sql.DriverManager;  
  6. import java.util.ResourceBundle;  
  7.   
  8. import com.ibatis.common.jdbc.ScriptRunner;  
  9. import com.ibatis.common.resources.Resources;  
  10. import com.ibatis.dao.client.DaoManager;  
  11. import com.yaoyuan.max.persistence.ibatis.DaoConfig;  
  12.   
  13. public class PersistenceFixture {  
  14.     private static final DaoManager daoManager;  
  15.   
  16.     static {  
  17.         try {  
  18.             ResourceBundle resource = ResourceBundle.getBundle("com/yaoyuan/max/persistence/database");  
  19.               
  20.             DaoConfig daoConfig = new DaoConfig(  
  21.                     "com/yaoyuan/max/persistence/database.properties");  
  22.             daoManager = daoConfig.getDaomanager();  
  23.             Class.forName(resource.getString("driver"));  
  24.             Connection conn = DriverManager.getConnection(  
  25.                     resource.getString("url"),  
  26.                     resource.getString("username"),  
  27.                     resource.getString("password"));  
  28.   
  29.             try {  
  30.                 ScriptRunner runner = new ScriptRunner(conn,true,true);  
  31.                 runner.setErrorLogWriter(new PrintWriter(System.out));  
  32.                 runner.setLogWriter(new PrintWriter(System.out));  
  33.                 runner.runScript(Resources  
  34.                         .getResourceAsReader("ddl/hsql/schema.sql"));  
  35.                   
  36.             } finally {  
  37.                 conn.close();  
  38.             }  
  39.   
  40.         } catch (Exception e) {  
  41.             throw new RuntimeException("Description.  Cause: " + e, e);  
  42.         }  
  43.     }  
  44.   
  45.     public static DaoManager getDaoManager() {  
  46.         return daoManager;  
  47.     }  
  48.   
  49. }  

    相应的DaoConfig.java代码
java 代码
 
  1. /** 
  2.  * 
  3.  */  
  4. package com.yaoyuan.max.persistence.ibatis;  
  5.   
  6. import java.io.Reader;  
  7. import java.util.Properties;  
  8.   
  9. import com.ibatis.common.resources.Resources;  
  10. import com.ibatis.dao.client.DaoManager;  
  11. import com.ibatis.dao.client.DaoManagerBuilder;  
  12.   
  13. /** 
  14.  * @author Yao Yuan 
  15.  * 
  16.  */  
  17. public class DaoConfig {  
  18.   
  19.     private final DaoManager daoManager;  
  20.   
  21.     public DaoConfig(String propertyFilePath) {  
  22.         try {  
  23.             String resource = "com/yaoyuan/max/persistence/ibatis/dao.xml";  
  24.             Reader reader = Resources.getResourceAsReader(resource);  
  25.             Properties props = Resources.getResourceAsProperties(propertyFilePath);  
  26.             daoManager = DaoManagerBuilder.buildDaoManager(reader,props);  
  27.         } catch (Exception e) {  
  28.             e.printStackTrace();  
  29.             throw new RuntimeException(  
  30.                     "Could not initialize DaoConfig.  Cause: " + e);  
  31.         }  
  32.     }  
  33.   
  34.     /** 
  35.      * 
  36.      * @return 
  37.      */  
  38.     public DaoManager getDaomanager() {  
  39.         return daoManager;  
  40.     }  
  41. }  

4. 然后就可以取得Dao进行测试了
java 代码
 
  1. (CategoryDao)PersistenceFixture.getDaoManager().getDao(CategoryDao.class);  
分享到:
评论

相关推荐

    junit针对spring mvc三层测试

    本测试着重关注Spring MVC架构中的三层:表现层(Presentation Layer)、业务层(Business Logic Layer)和服务数据访问层(Service and Data Access Layer)。下面我们将详细探讨如何使用JUnit进行针对这三层的测试...

    JUnit(针对spring和hibernate)

    4. **服务层测试**:在模拟了数据访问层之后,测试业务逻辑服务。这里可以使用`@MockBean`来替换真实的DAO,避免实际数据库操作。 5. **Spring Boot测试**:如果使用的是Spring Boot,其内置的测试支持可以简化很多...

    Integration-Test-With-HSQLDB

    总的来说,集成测试结合HSQLDB、Junit和Hibernate,能够有效地验证Java应用的数据访问层和业务逻辑,确保代码质量,并减少因数据库操作导致的测试复杂性。在实践中,这样的测试策略可以帮助开发者发现和修复问题,...

    各种框架的junit测试.rar

    JUnit可以帮助我们创建针对Hibernate实体、持久化层和数据访问对象(DAO)的测试。我们可以使用`@MockBean`和`@SpyBean`注解来模拟数据库操作,或者使用HSQLDB这样的内存数据库进行真实的数据交互测试。 在对Spring...

    Spring数据库访问(HSQL)(三)

    Spring作为一款流行的Java企业级应用框架,提供了强大的数据访问和集成层,支持多种数据库系统,包括HSQL。在"Spring数据库访问(HSQL)(三)"这个主题中,博主可能详细讲解了如何配置Spring与HSQL的集成,以及如何...

    嵌入式开源数据库系统对比

    - **ORM 支持**:支持 Hibernate 等 ORM 工具,简化了数据访问层的开发工作。 - **应用场景**:适用于需要快速部署、轻量级数据库解决方案的场合,特别适合开发测试环境中的使用。 #### SQLite - **简介**:...

    孔浩组织类型—spring测试类实现3

    我们可以结合`@WebMvcTest`、`@DataJpaTest`等更具体的注解来限制加载的组件,如只加载Web层或数据访问层,以提高测试速度。 在测试类中,我们经常使用`@Autowired`注解来注入需要测试的服务、DAO或其他bean。例如...

    spring-jpa-hsqldb:Spring,JPA和HSQLDB的简单演示

    JPA允许我们通过对象关系映射(ORM)将Java对象映射到数据库表,简化了数据访问层的开发。在本项目中,JPA可能被用来定义实体类,通过注解来描述数据库表结构,然后使用JPA的Repository接口来执行CRUD(创建、读取、...

    springboot的应用架构代码

    - `@Service`和`@Repository`:标记服务层和数据访问层组件。 - `@Autowired`:自动注入依赖。 - `@ConfigurationProperties`:绑定配置文件中的属性到Java对象。 通过这些知识点,我们可以理解并构建一个完整的...

    Spring3.x 企业级应用开发源码库文件2

    在Spring中,可以通过HibernateTemplate或HibernateSessionFactory进行集成,实现数据访问层的事务管理。 2. **poi-ooxml-schemas-3.7.jar 和 poi-3.7.jar**:Apache POI 是用于读写Microsoft Office格式文件的Java...

    springboot.zip

    提供了对单元测试和集成测试的支持,如 `@SpringBootTest` 注解可以启动整个应用进行集成测试,而 `@DataJpaTest` 可以专门针对数据访问层进行测试。 10. **安全**: SpringBoot 与 Spring Security 结合,提供了...

    hello-spring:SpringBoot测试

    3. `@DataJpaTest`:专门用于JPA数据访问层的测试,会启动HSQLDB内存数据库,自动配置JPA,方便测试数据操作。 三、测试配置与数据准备 1. `@TestConfiguration`:用于在测试中定义额外的配置类,避免污染主配置。...

    spring-boot-reference2018最新版

    Spring Boot提供了丰富的测试支持,包括`@SpringBootTest`用于启动整个Spring Boot应用进行集成测试,`@WebMvcTest`用于只启动Web层进行Controller测试,`@DataJpaTest`用于JPA数据访问层的测试等。 9. **日志** ...

    Spring Boot介绍内容.zip

    8. **测试支持**:Spring Boot提供了便捷的测试工具,包括`@SpringBootTest`用于启动整个应用进行集成测试,`@WebMvcTest`和`@DataJpaTest`则分别针对Web层和数据访问层进行隔离测试。 9. **配置文件**:Spring ...

    2-创建业务逻辑与数据库访问[归纳].pdf

    - **三层架构**:在标准的三层架构中,业务逻辑层位于数据访问层和表现层之间,负责处理业务规则和流程。 - **Command Pattern**:此模式中,客户端创建Command对象并将其传递给Command Dispatcher。Dispatcher...

    blogComJSF:博客 Com Java Server Faces、Maven、HSQLDB、JPA 和 Hibernate

    2. `src/main/java` - 存放Java源代码,包括JSF的后台Bean和数据访问层的实现。 3. `src/main/webapp` - Web应用的根目录,包含JSF页面(.xhtml)、资源文件(CSS、JS)和WEB-INF目录(web.xml配置文件)。 4. `src/...

    springboot经典资源2

    6. **数据访问**:Spring Boot支持多种数据访问技术,如JDBC、JPA、MyBatis等,通过配置数据源和实体类,可以快速构建数据访问层。 7. **安全控制**:Spring Security是Spring Boot默认的安全管理框架,提供认证和...

    spring几种Dao支持配置

    Spring Data是Spring提供的一个高度抽象的库,它简化了数据访问层的实现,支持多种持久化技术,如JPA、MongoDB等。通过Spring Data,我们可以用很少的代码实现复杂的查询操作。 以上就是Spring对DAO支持的多种配置...

    lib1 flex+struts2+spring+ibatis jar 完整的jar 需要下载本人资源lib2

    这些库组合在一起,构成了一个完整的Java Web应用开发环境,能够支持Flex前端、Struts2控制层、Spring服务层和iBatis数据访问层的高效协作。在实际项目中,开发者还需要根据具体需求添加其他的库和配置,以实现更...

Global site tag (gtag.js) - Google Analytics