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];



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章