Hibernate(三) Junit 测试 ,创建 模板

一,Junit 测试

1.创建一个测试类

    选择自己要测试的类->右击 new ->other ->java  ->JUnit ,JUnit Text Case

   ->Source folder,Package 选择创建的路径

   
2. assertEquals(expected, actual) 断言
    在测试的方法里可以使用 断言 来进行测试,如:
    
@Test
	public void testFindDeptById2() {
		Dept dept=deptBiz.findDeptById2(1);
		assertEquals("叫", dept.getDeptName());
	}

    expected:预期的结果

    actual: 实际的结果

二,创建 模板

1.创建一个 接口 IBaseDao<T>
package cn.hibernatedemo.dao;

import cn.hibernatedemo.entity.Dept;

public interface IBaseDao<T> {
	//通过Session 的get()方法,根据OID 加载指定对象
	public T get(int id);
    //通过Session 的load()方法,根据OID 加载指定对象
	public T load(int id);
	//保存指定的 泛型对象
	public void save(T entity);
	//修改指定的 泛型对象
	public void update(T entity);
	//删除指定的 泛型对象
	public void delete(T entity);
}

2.创建一个 抽象类 BaseDaoImp<T> 实现 IBaseDao<T> 
package cn.hibernatedemo.dao;

import java.lang.reflect.ParameterizedType;

import org.hibernate.Session;

import cn.hibernatedemo.entity.Dept;

public abstract class BaseDaoImp<T> implements IBaseDao<T> {
	private Class<T> clazz;
	
	public Session currentSession() {
		return HibernateUtil.currentSession();
	}
	public BaseDaoImp() {
		// TODO Auto-generated constructor stub
		//使用反射技术得到 T 的 真实类型
		ParameterizedType pt=(ParameterizedType)this.getClass().getGenericSuperclass();
		this.clazz=(Class<T>)pt.getActualTypeArguments()[0];
	}
	@Override
	public T get(int id) {
		// TODO Auto-generated method stub
		return (T) currentSession().get(clazz, id);
	}

	@Override
	public T load(int id) {
		// TODO Auto-generated method stub
		return (T) currentSession().load(clazz, id);
	}

	@Override
	public void save(T entity) {
		// TODO Auto-generated method stub
		currentSession().save(entity);
	}

	@Override
	public void update(T entity) {
		// TODO Auto-generated method stub
		currentSession().update(entity);
	}

	@Override
	public void delete(T entity) {
		// TODO Auto-generated method stub
		 currentSession().delete(entity);
	}
	
	
}
    1)获得Session
          1.可以创建一个获得Session 的方法currentSession() ,直接使用方法名调用 获得Session 
            public Session currentSession() {
return HibernateUtil.currentSession();
    }
        2.可以 使用 之前创建的 HibernateUtil 类,直接 使用 HibernateUtil.currentSession()                       获得Session

    2)得到 T 的 真实类型
            ParameterizedType pt=(ParameterizedType)this.getClass().getGenericSuperclass();
    this.clazz=(Class<T>)pt.getActualTypeArguments()[0];



猜你喜欢

转载自blog.csdn.net/lzj470612639/article/details/79710413