封装单元测试的重复代码

   平时几乎每个单元测试开头都要写以下代码,神烦!

复制代码
 1     private Session session;
 2     private Transaction transaction;
 3 
 4     @Before
 5     public void init(){
 6         session = getSession();
 7         transaction = session.beginTransaction();
 8     }
 9 
10     @After
11     public void destroy(){
12         transaction.commit();
13         session.close();
14     }
复制代码

  今天要把它封装一下,做了一个父类:BaseTest,让所有需要上面代码的单元测试都及继承这个父类,具体内容如下:

复制代码
 1 class BaseTest {
 2     static Session session;
 3     private static Transaction transaction;
 4 
 5     @Before
 6     public void init() {
 7         session = getSession();
 8         transaction = session.beginTransaction();
 9         System.out.println("[时间]"+new Date()+"    session创建成功!事务已开启!");
10     }
11 
12     @After
13     public void destroy() {
14         transaction.commit();
15         session.close();
16         System.out.println("[时间]"+new Date()+"    事务已提交!session已销毁!");
17     }
18 }
复制代码

然后子类就可以这么写:

复制代码
public class QueryByCriteria extends BaseTest {
    @Test
    public void QueryTest(){
        Criteria criteria = session.createCriteria(ClassRoom.class);
        List<ClassRoom> list = criteria.list();
        list.stream()
                .forEach(item->System.out.println(item.getClassName()));
    }
}        
复制代码

 最后附上HibernateUtil:

复制代码
public class HibernateUtil {

    private static final SessionFactory sessionFactory = buildSessionFactory();

    private static SessionFactory buildSessionFactory() {
        try {
            Configuration configuration = new Configuration();
            configuration.configure("Hibernate.cfg.xml");
    //        在下面添加映射,不要写在配置文件中
            configuration.addAnnotatedClass(ClassRoom.class);
            StandardServiceRegistryBuilder ssrb = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
            return configuration.buildSessionFactory(ssrb.build());
        }
        catch (Throwable ex) {
            System.err.println("Initial SessionFactory creation failed !" + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static Session getSession() throws HibernateException {
        return sessionFactory.openSession();
    }
}
复制代码

 

posted @ 2016-06-15 15:47  #张志豪#  阅读(333)  评论(0)    收藏  举报
编辑推荐:
· 记一次.NET MAUI项目中绑定Android库实现硬件控制的开发经历
· 糊涂啊!这个需求居然没想到用时间轮来解决
· 浅谈为什么我讨厌分布式事务
· 在 .NET 中使用内存映射文件构建高性能的进程间通信队列
· 一个 java 空指针异常的解决过程
阅读排行:
· 从硬盘爆满到 GitHub 封号,一位前端开发者的开源历险记
· 微软又一自动化开源王炸,Selenium 慌了!
· 微服务的10大问题
· C#解析JSON数据全攻略
· 上周热点回顾(7.14-7.20)
点击右上角即可分享
微信分享提示