Hibernate Po 单元测试经验总结

    重新了解Hibernate,发现在做单元测试时比较痛苦,增加一个类,要写一堆代码,并且要在配置文件中增加该类的映射问题,随将TestCase封装成一个新类HibernateTestCase 用于POJO测试。

在基类里面自动创建和销毁Session,SessionFractory并实现自动加载maping文件。这样在子类的测试中

专注于业务的测试就行了。

 

package com.jtv.junit;

import org.hibernate.*;
import org.hibernate.cfg.Configuration;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.IOException;
import junit.framework.TestCase;


public class HibernateTestCase extends TestCase {
 public Session session = null;
 public SessionFactory sf = null;

 /**
  * Name:setUp
  * Desc
  *  初始化Hibernate配置文件,并自动搜寻Hibernate .hbm.xml文件,自动加载  
  * @author ddwcyl
  */ 
 protected void setUp() throws Exception {
  // 调用SuperClass的setUp()事件
  super.setUp();
  Configuration config = new Configuration().configure();
  //auto search and load mapping
        ResourcePatternResolver rp = new PathMatchingResourcePatternResolver(this.getClass().getClassLoader());
       
        Resource[] resources;
        try {
            resources = rp.getResources("/**/*.hbm.xml");
           
            for(int i=0;i<resources.length;i++){
                Resource resource = resources[i];
               
                //将找到的配置文件加入
                if(resource.exists())
                    config.addFile(resource.getFile());
               
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        //init SessionFactory
        sf = config.buildSessionFactory();
  session = sf.openSession();
  
 }

 /**
  * Name:tearDown
  * Desc
  *  关闭已经打开的资源,Session和SessionFractory
  * @author ddwcyl
  */ 
 protected void tearDown() throws Exception {
  //close session,sessfactory
  super.tearDown();
  if(session!=null){
   session.close();
  }
  if(sf!=null){
   sf.close();
  }
 }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值