`
raining_cn
  • 浏览: 6014 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

spring+hibernate单元测试 示例

阅读更多
spring单元测试,据传说很简单,但按照网上的方法总有问题。换了一种方法试成功了。

1.表:

sql 代码
  1. create table t_user (   
  2.    id                   varchar(20)          not null,   
  3.    name                 varchar(20)          null  
  4.    constraint PK_T_USER primary key (id)   
  5. )  
2。hibernate层: 自动生成的domain code
java 代码
  1. package com.forum.model;   
  2.   
  3. // Generated 2007-5-9 9:42:02 by Hibernate Tools 3.2.0.b9   
  4.   
  5. /**  
  6.  * TUser generated by hbm2java  
  7.  */  
  8. public class User implements java.io.Serializable {   
  9.   
  10.     private String id;   
  11.   
  12.     private String name;   
  13.   
  14.        
  15.   
  16.     public User() {   
  17.     }   
  18.   
  19.     public User(String id) {   
  20.         this.id = id;   
  21.     }   
  22.   
  23.     public User(String id, String name) {   
  24.         this.id = id;   
  25.         this.name = name;          
  26.     }   
  27.   
  28.     public String getId() {   
  29.         return this.id;   
  30.     }   
  31.   
  32.     public void setId(String id) {   
  33.         this.id = id;   
  34.     }   
  35.   
  36.     public String getName() {   
  37.         return this.name;   
  38.     }   
  39.   
  40.     public void setName(String name) {   
  41.         this.name = name;   
  42.     }      
  43.   
  44. }   

       hbm文件:

xml 代码
  1. <!---->  
  2. <!---->xml version="1.0"?>  
  3. <!---->
  4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  5. <!---->  
  6. <hibernate-mapping>  
  7.     <class name="com.forum.model.User" table="t_user" schema="dbo" catalog="forum">  
  8.         <id name="id" type="string">  
  9.             <column name="id" length="20" />  
  10.             <generator class="assigned" />  
  11.         id>  
  12.         <property name="name" type="string">  
  13.             <column name="name" length="20" />  
  14.         property>           
  15.     class>  
  16. hibernate-mapping>  

 3.spring层(作为服务层)

java 代码
  1. package com.forum.service;   
  2.   
  3. import com.forum.model.User;   
  4.   
  5. import java.util.List;   
  6.   
  7. public class UserService extends BaseService {   
  8.        
  9.     private static final String SQL_SELECT_BYID = "from User as u where u.id=?";    
  10.   
  11.     public User findUserById(String userId) throws ServiceException {   
  12.         try {   
  13.             List list = hibernateTemplate.find(SQL_SELECT_BYID, userId);   
  14.             return list.isEmpty() ? null : (User) list.get(0);   
  15.         } catch (Exception e) {   
  16.             throw new ServiceException("Cannot find the User[" + userId + "]: " + e, e);   
  17.         }   
  18.     }     
  19. }   
java 代码
  1. package com.forum.service;   
  2. import org.springframework.orm.hibernate3.HibernateTemplate;   
  3. import java.util.List;   
  4.   
  5. public abstract class BaseService implements java.io.Serializable {   
  6.        
  7.     protected HibernateTemplate hibernateTemplate;      
  8.   
  9.     public HibernateTemplate getHibernateTemplate() {   
  10.         return hibernateTemplate;   
  11.     }   
  12.   
  13.     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {   
  14.         this.hibernateTemplate = hibernateTemplate;   
  15.     }       
  16. }  

测试类:
java 代码
  1. package com.forum.service;   
  2.   
  3. import com.forum.model.User;   
  4. import org.junit.Before;   
  5. import org.junit.Test;   
  6.   
  7. public class UserServiceTest extends BaseServiceTest {   
  8.     private User user;   
  9.     private UserService userService;   
  10.   
  11.     @Before  
  12.     protected void setUp() throws Exception {   
  13.         userService = (UserService) ctx.getBean("userService");   
  14.     }   
  15.   
  16.     @Test  
  17.     public void testFindUserById() throws Exception {   
  18.         user = userService.findUserById("1");   
  19.         assertNotNull(user);   
  20.     }   
  21. }   

4.applicationContext_test.xml 放在class下或者src目录下。
java 代码
  1. <!---->"1.0" encoding="UTF-8"?>   
  2. <!---->"-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">   
  3. default-autowire="byName">   
  4.        
  5.   
  6.     "dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">   
  7.         "driverClassName"><value></value>net.sourceforge.jtds.jdbc.Driver   
  8.         "url"><value></value>jdbc:jtds:sqlserver://127.0.0.1:1433/forum   
  9.         "username"><value></value>sa   
  10.         "password"><value></value>sa   
  11.        
  12.   
  13.     <!---->   
  14.     "sessionFactory"  
  15.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">   
  16.         "configLocation">   
  17.             <value></value>classpath:hibernate.cfg.xml   
  18.            
  19.         "dataSource">   
  20.             "dataSource"/>   
  21.            
  22.        
  23.   
  24.     "hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">   
  25.         "sessionFactory">   
  26.             "sessionFactory"/>   
  27.            
  28.        
  29.   
  30.     "userService" class="com.forum.service.UserService">   
  31.     "hibernateTemplate" ref="hibernateTemplate"/>   
  32.         
  33.   
  34.   


    hibenate.cfg.xml 的内容自己完成。工具自动生成的时候就有的。

5. 运行就可以了。

6。注意问题: spring 测试时要导入相应的jar文件(它的lib下有)

分享到:
评论
8 楼 anxin587 2007-05-13  
Godlikeme 写道
spring + hibernate 要这么用...无语
别用spring得了.


拿该如何用spring啊??
7 楼 raining_cn 2007-05-13  
多谢Godlikeme,我把代码改了下。顺便问下测试的配置文件applicationContext-test.xml这么放总感觉不是办法,但是我的applicationContext.xml中的dataSource是通过加载配置文件来获取的。再junit run的时候会出问题。我的dataSouce是这样写的
<bean id="propertyConfigurer"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
		<property name="locations">
			<list>
				<value>/WEB-INF/jdbc.properties</value>
			</list>
		</property>
	</bean>
	<bean id="dataSource"
		class="org.apache.commons.dbcp.BasicDataSource"
		destroy-method="close">
		<property name="driverClassName"
			value="${jdbc.driverClassName}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>
6 楼 Godlikeme 2007-05-11  
BaseService里面简单的封装了sessionFactory, session的处理,
封装的还有很多问题。
为什么不用hiberanteTemplate呢。
5 楼 liuganquan 2007-05-11  
spring 自带了事务处理控制,怎么不用~~
还有单元测试可以用spring自带的mock测试啊
4 楼 raining_cn 2007-05-11  
Godlikeme   能不能讲的细一点。
3 楼 Godlikeme 2007-05-11  
spring + hibernate 要这么用...无语
别用spring得了.
2 楼 raining_cn 2007-05-11  
做这个测试的初衷就是要集成hibernate,当然要涉及到底层的数据库,而且有一些样本数据。userid为1基本上会存在。要是要确保正确,可是试试打印出来user的信心就可以了。
1 楼 spiritfrog 2007-05-10  
对于service的测试算是实现了,可是测试的数据却依赖于数据库,比如userid为1的不存在就会导致断言的错误;而且测试方法可能会破坏数据库中的数据(可能删除或者更改掉),除非开发跟测试是两个不同数据库。

相关推荐

    Flex+spring+hibernate示例

    Flex+Spring+Hibernate示例是一种常见的企业级应用架构,它结合了Adobe Flex前端技术、Spring后端框架和Hibernate持久层框架,以构建高效、灵活且易于维护的Web应用程序。在这个示例中,开发者可能已经展示了如何...

    spring+hibernate整合简单示例

    在实际项目中,"spring+hibernate整合简单示例"可能包含以下内容:一个简单的Spring配置文件,定义了DataSource、SessionFactory、TransactionManager等bean;一个或多个DAO接口和其实现类,使用HibernateTemplate...

    spring mvc + spring + hibernate 全注解整合开发视频教程 11

    在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...

    gwt+spring+hibernate

    标题 "gwt+spring+hibernate" 涉及的是一个使用Google Web Toolkit (GWT)、Spring框架和Hibernate ORM技术的集成示例。这是一个常见的Web应用开发组合,用于构建高效、可扩展且功能丰富的Java web应用程序。下面将...

    maven+spring+springmvc+hibernate项目示例

    如果项目包含了单元测试,Maven也可以帮助运行测试用例。 总结,这个"Maven+Spring+SpringMVC+Hibernate"项目示例是一个典型的Java Web开发架构,它结合了强大的构建工具和框架,为开发人员提供了一个高效、灵活的...

    Struts+Spring+Hibernate开发实例.pdf

    标题和描述中指出的文档《Struts+Spring+Hibernate开发实例.pdf》包含了关于这三个流行的Java开源框架结合使用的示例代码和相关知识点。Struts负责视图与控制器部分,Spring负责业务逻辑层及依赖注入,Hibernate负责...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    在`stm-ssh`和`SSHdemo`中,可能包含的是Struts2+Spring+Hibernate的整合示例。开发者通常会创建Action类来处理请求,定义Service层来封装业务逻辑,并使用Hibernate来操作数据库。Spring会管理这些对象的生命周期和...

    spring+hibernate CRUD 简单示例

    在本示例中,Spring主要负责管理Hibernate的SessionFactory和DAO层的对象,以及处理事务。 2. **Hibernate框架**:Hibernate是一个流行的Java ORM框架,它简化了与数据库的交互,将对象和表之间的映射关系自动化...

    纯净的spring+hibernate+mysql

    【纯净的Spring+Hibernate+MySQL】项目是一个典型的Java Web应用示例,它将Spring MVC、Hibernate ORM框架与MySQL数据库相结合,以实现用户登录、注册等基础功能。在本项目中,Spring MVC作为控制层,负责处理HTTP...

    搞定J2EE:STRUTS+SPRING+HIBERNATE整合详解与典型案例 (1)

    12.6.16 编写Spring和Hibernate的配置文件spring-config.xml 12.6.17 编写web.xml 12.6.18 验证示例 12.7 小结 第四篇 J2EE项目案例精选 第十三章 网上调查系统 13.1 系统概述 13.2 需求分析 13.2.1 系统用例图 ...

    spring+hibernate annotation 完整示例,带数据库脚本

    这个"spring+hibernate annotation 完整示例,带数据库脚本"的项目,旨在提供一个全面的示例,帮助开发者了解如何在实际项目中结合Spring和Hibernate使用注解来实现数据访问。下面我们将深入探讨这些知识点。 1. **...

    easyui+spring+hibernate示例,带权限管理

    "easyui+spring+hibernate示例,带权限管理"的项目正是基于这样的需求构建的,它结合了三种主流的技术栈:EasyUI、Spring和Hibernate,用于创建一个具备完整权限控制功能的应用系统。下面将详细阐述这三个关键组件...

    Spring+Hibernate整合

    在开发过程中,子文件"SpringHibernateDemo"可能是一个包含整合示例代码的项目,其中包括Spring的配置文件、Hibernate的实体类、DAO层接口及其实现、服务层接口及其实现等。这些代码展示了如何在Spring环境中使用...

    Spring+hibernate整合源代码

    9. **测试**:编写单元测试和集成测试是验证整合是否成功的关键。可以使用 Spring 提供的 TestContext 框架,结合 JUnit 或 TestNG,对 Service 和 DAO 层进行测试。 10. **最佳实践**:在实际项目中,为了提高性能...

    Struts2.0+Spring2.0+Hibernate3.1登录及增删改查的完整演示示例

    应广大网友需求,自己抽了点时间写了一个Struts2.0+Spring2.0+Hibernate3.1的登录及增删改查的完整演示示例,以此奉献给大家,由于本人水平有限,有写的不好的地方还望大家多提宝贵意见,如果有不明白的地方请关注我的...

    spring+hibernate整合demo

    标题"spring+hibernate整合demo"表明这是一个示例项目,展示了如何将Spring和Hibernate这两个框架结合使用。整合Spring和Hibernate可以使应用程序更易于管理,因为Spring可以控制Hibernate的生命周期,并提供事务...

    struts2+spring+hibernate+jquery+json

    `MyAddressList.rar`可能是一个包含项目源代码或资源的压缩文件,可能包含了Struts2、Spring、Hibernate的配置文件,jQuery的JavaScript文件,以及相关的HTML模板,这些文件共同构成了一个实际运行的Web应用示例。...

    Spring+Hibernate+MySql的应用实例

    总之,"Spring+Hibernate+MySql的应用实例"是一个典型的Java Web开发示例,涵盖了从数据持久化到业务逻辑处理再到Web展示的完整流程。通过学习和实践这个实例,开发者可以深入了解这些技术的集成使用,提升自己的...

    struts+spring+hibernate

    4. **测试友好**:Spring 支持单元测试和集成测试,方便进行代码质量控制。 然而,SSH 架构也有其局限性,例如配置繁琐、学习曲线较陡峭、性能开销等。随着技术的发展,Spring Boot 和 Spring Framework 5 的出现,...

Global site tag (gtag.js) - Google Analytics