zoukankan      html  css  js  c++  java
  • 封装单元测试的重复代码

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

     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();
        }
    }
  • 相关阅读:
    Android开发:系统自动实现开机启动
    Android高手进阶教程【转】
    android 各种控件颜色值
    Android开发博客国内最大的移动开发博客eoe移动开发者社区
    异步图片加载工具类
    Android中shape的使用
    Android的asset/res资源框架结构
    winddows 运行指令 (2)
    使用activeMQ实现jms
    ActiveMQ在C#中的应用
  • 原文地址:https://www.cnblogs.com/zhang-zhi-hao/p/MakeBaseUnitTest.html
Copyright © 2011-2022 走看看