用JUnit测试Spring管理Hibernate框架的一个例子

 

                                         (源代码:shTest https://github.com/TerenceJIng/javaLearn)

将JUnit 与hibernate整合起来

用JUnit测试Spring管理Hibernate框架的一个例子_第1张图片

上述例子,分为三个包:

  • src:存放业务代码
  • test:存放测试代码
  • lib:引入Hiberante和Spring框架的jar包。

JUnit应用于Spring测试

Spring核心配置文件applicationContext.xml:



    

SpringTest.java:

import java.util.Date;
import org.junit.BeforeClass;
import org.junit.Test;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.ClassPathXmlApplicationContext;
 
public class SpringTest {
       privatestatic ApplicationContext context = null; 
       /*
        * 加载Spring的核心配置文件
        */
       @BeforeClass
       publicstatic void setUpBeforeClass() throws Exception {
              context= new ClassPathXmlApplicationContext("applicationContext.xml");
       }
       @Test
       publicvoid test() {
              Datedate =  (Date)context.getBean("date");
              System.out.println(date);
       }
}

执行测试:加载进了配置文件中获取的时间

用JUnit测试Spring管理Hibernate框架的一个例子_第2张图片

JUnit应用于Hibernate

Hibernate核心配置文件hibernate.cfg.xml




    
        org.hibernate.dialect.MySQLDialect
        jdbc:mysql://127.0.0.1:3306/mytest
        root
        root
        com.mysql.jdbc.Driver
        com.mysql.jdbc.Driver
    
测试类HibernateTest.java
import org.hibernate.Session;
import org.junit.Test;
public class HibernateTest {@Test public void test() {
		Session session = HibernateSessionFactory.getSession();
		System.out.println(session);
	}
}
测试执行结果:

Spring管理Hibernate

给Spring核心配置文件applicationContext.xml 引入Hibernate配置文件信息:


	
		
	
	
SpringAndHibernate.java
import org.hibernate.impl.SessionFactoryImpl;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class SpringAndHibernate {
	private static ApplicationContext context;@BeforeClass public static void setUpBeforeClass() throws Exception {
		context = new ClassPathXmlApplicationContext("applicationContext.xml");
	}@Test public void test() {
		SessionFactoryImpl bean = (SessionFactoryImpl) context.getBean("sessionFactory");
		System.out.println(bean);
	}
}
测试:
用Spring管理Hibernate需要引入持久化类包,还需要以下Hibernate会话工厂类:
HibernateSessionFactory.java类
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
/** * Configures and provides access to Hibernate sessions, tied to the * current thread of execution. Follows the Thread Local Session * pattern, see {@link http://hibernate.org/42.html }. */
public class HibernateSessionFactory {
	/** * Location of hibernate.cfg.xml file. * Location should be on the classpath as Hibernate uses * #resourceAsStream style lookup for its configuration file. * The default classpath location of the hibernate config file is * in the default package. Use #setConfigFile() to update * the location of the configuration file for the current session. */
	private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
	private static final ThreadLocal < Session > threadLocal = new ThreadLocal < Session > ();
	private static Configuration configuration = new Configuration();
	private static org.hibernate.SessionFactory sessionFactory;
	private static String configFile = CONFIG_FILE_LOCATION;
	static {
		try {
			configuration.configure(configFile);
			sessionFactory = configuration.buildSessionFactory();
		} catch(Exception e) {
			System.err.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
	}
	private HibernateSessionFactory() {}
	/** * Returns the ThreadLocal Session instance. Lazy initialize * the SessionFactory if needed. * * @return Session * @throws HibernateException */
	public static Session getSession() throws HibernateException {
		Session session = (Session) threadLocal.get();
		if (session == null || !session.isOpen()) {
			if (sessionFactory == null) {
				rebuildSessionFactory();
			}
			session = (sessionFactory != null) ? sessionFactory.openSession() : null;
			threadLocal.set(session);
		}
		return session;
	}
	/** * Rebuild hibernate session factory * */
	public static void rebuildSessionFactory() {
		try {
			configuration.configure(configFile);
			sessionFactory = configuration.buildSessionFactory();
		} catch(Exception e) {
			System.err.println("%%%% Error Creating SessionFactory %%%%");
			e.printStackTrace();
		}
	}
	/** * Close the single hibernate session instance. * * @throws HibernateException */
	public static void closeSession() throws HibernateException {
		Session session = (Session) threadLocal.get();
		threadLocal.set(null);
		if (session != null) {
			session.close();
		}
	}
	/** * return session factory * */
	public static org.hibernate.SessionFactory getSessionFactory() {
		return sessionFactory;
	}
	/** * return session factory * * session factory will be rebuilded in the next call */
	public static void setConfigFile(String configFile) {
		HibernateSessionFactory.configFile = configFile;
		sessionFactory = null;
	}
	/** * return hibernate configuration * */
	public static Configuration getConfiguration() {
		return configuration;
	}
}

 

spring与hibernate的整合测试总结:1.添加spring,hibernate,MySQL等jar包2.添加spring配置文件,hibernate配置文件3.@BeforeClass获得spring的配置文件ClassPathXmlApplicationContext("配置文件")4.测试通过getBean获得spring管理的bean是否成功(Hibernate、Spring+Hibernate同理测试可得)

 

你可能感兴趣的:(【Json,&,JUnit】)