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. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4.   
  5. <hibernate-mapping>  
  6.     <class name="com.forum.model.User" table="t_user" schema="dbo" catalog="forum">  
  7.         <id name="id" type="string">  
  8.             <column name="id" length="20" />  
  9.             <generator class="assigned" />  
  10.         id>  
  11.         <property name="name" type="string">  
  12.             <column name="name" length="20" />  
  13.         property>           
  14.     class>  
  15. 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下有)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值