在测试数据访问层的DAO代码时,如果连接真实的数据库会导致产生一些测试数据。应用HSQLDB在内存中建立一个同结构的数据库用来测试是个好主意。下面就针对使用Ibatis的DAO代码进行测试。
1. 下载HSQLDB 的jar文件。
2. 建立一个数据库描述文件
java 代码
- driver=org.hsqldb.jdbcDriver
- url=jdbc:hsqldb:mem:testfixture
- username=sa
- password=
其中testfixture是可以更改的。
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;
-
-
-
-
-
- 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);
- }
- }
-
-
-
-
-
- public DaoManager getDaomanager() {
- return daoManager;
- }
- }
4. 然后就可以取得Dao进行测试了
java 代码
- (CategoryDao)PersistenceFixture.getDaoManager().getDao(CategoryDao.class);
分享到:
相关推荐
本测试着重关注Spring MVC架构中的三层:表现层(Presentation Layer)、业务层(Business Logic Layer)和服务数据访问层(Service and Data Access Layer)。下面我们将详细探讨如何使用JUnit进行针对这三层的测试...
4. **服务层测试**:在模拟了数据访问层之后,测试业务逻辑服务。这里可以使用`@MockBean`来替换真实的DAO,避免实际数据库操作。 5. **Spring Boot测试**:如果使用的是Spring Boot,其内置的测试支持可以简化很多...
总的来说,集成测试结合HSQLDB、Junit和Hibernate,能够有效地验证Java应用的数据访问层和业务逻辑,确保代码质量,并减少因数据库操作导致的测试复杂性。在实践中,这样的测试策略可以帮助开发者发现和修复问题,...
JUnit可以帮助我们创建针对Hibernate实体、持久化层和数据访问对象(DAO)的测试。我们可以使用`@MockBean`和`@SpyBean`注解来模拟数据库操作,或者使用HSQLDB这样的内存数据库进行真实的数据交互测试。 在对Spring...
Spring作为一款流行的Java企业级应用框架,提供了强大的数据访问和集成层,支持多种数据库系统,包括HSQL。在"Spring数据库访问(HSQL)(三)"这个主题中,博主可能详细讲解了如何配置Spring与HSQL的集成,以及如何...
- **ORM 支持**:支持 Hibernate 等 ORM 工具,简化了数据访问层的开发工作。 - **应用场景**:适用于需要快速部署、轻量级数据库解决方案的场合,特别适合开发测试环境中的使用。 #### SQLite - **简介**:...
我们可以结合`@WebMvcTest`、`@DataJpaTest`等更具体的注解来限制加载的组件,如只加载Web层或数据访问层,以提高测试速度。 在测试类中,我们经常使用`@Autowired`注解来注入需要测试的服务、DAO或其他bean。例如...
JPA允许我们通过对象关系映射(ORM)将Java对象映射到数据库表,简化了数据访问层的开发。在本项目中,JPA可能被用来定义实体类,通过注解来描述数据库表结构,然后使用JPA的Repository接口来执行CRUD(创建、读取、...
- `@Service`和`@Repository`:标记服务层和数据访问层组件。 - `@Autowired`:自动注入依赖。 - `@ConfigurationProperties`:绑定配置文件中的属性到Java对象。 通过这些知识点,我们可以理解并构建一个完整的...
在Spring中,可以通过HibernateTemplate或HibernateSessionFactory进行集成,实现数据访问层的事务管理。 2. **poi-ooxml-schemas-3.7.jar 和 poi-3.7.jar**:Apache POI 是用于读写Microsoft Office格式文件的Java...
提供了对单元测试和集成测试的支持,如 `@SpringBootTest` 注解可以启动整个应用进行集成测试,而 `@DataJpaTest` 可以专门针对数据访问层进行测试。 10. **安全**: SpringBoot 与 Spring Security 结合,提供了...
3. `@DataJpaTest`:专门用于JPA数据访问层的测试,会启动HSQLDB内存数据库,自动配置JPA,方便测试数据操作。 三、测试配置与数据准备 1. `@TestConfiguration`:用于在测试中定义额外的配置类,避免污染主配置。...
Spring Boot提供了丰富的测试支持,包括`@SpringBootTest`用于启动整个Spring Boot应用进行集成测试,`@WebMvcTest`用于只启动Web层进行Controller测试,`@DataJpaTest`用于JPA数据访问层的测试等。 9. **日志** ...
8. **测试支持**:Spring Boot提供了便捷的测试工具,包括`@SpringBootTest`用于启动整个应用进行集成测试,`@WebMvcTest`和`@DataJpaTest`则分别针对Web层和数据访问层进行隔离测试。 9. **配置文件**:Spring ...
- **三层架构**:在标准的三层架构中,业务逻辑层位于数据访问层和表现层之间,负责处理业务规则和流程。 - **Command Pattern**:此模式中,客户端创建Command对象并将其传递给Command Dispatcher。Dispatcher...
2. `src/main/java` - 存放Java源代码,包括JSF的后台Bean和数据访问层的实现。 3. `src/main/webapp` - Web应用的根目录,包含JSF页面(.xhtml)、资源文件(CSS、JS)和WEB-INF目录(web.xml配置文件)。 4. `src/...
6. **数据访问**:Spring Boot支持多种数据访问技术,如JDBC、JPA、MyBatis等,通过配置数据源和实体类,可以快速构建数据访问层。 7. **安全控制**:Spring Security是Spring Boot默认的安全管理框架,提供认证和...
Spring Data是Spring提供的一个高度抽象的库,它简化了数据访问层的实现,支持多种持久化技术,如JPA、MongoDB等。通过Spring Data,我们可以用很少的代码实现复杂的查询操作。 以上就是Spring对DAO支持的多种配置...
这些库组合在一起,构成了一个完整的Java Web应用开发环境,能够支持Flex前端、Struts2控制层、Spring服务层和iBatis数据访问层的高效协作。在实际项目中,开发者还需要根据具体需求添加其他的库和配置,以实现更...