由于我用的版本是Junit5 在测试的时候发现会出现空指针问题,
源代码如下
package com.qjh.test;
//junit测试
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.After;
import org.junit.Before;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import com.qjh.pojo.User;
import com.qjh.util.HibernateUtil;
public class HibernateTest {
Session session =null;
Transaction tx=null;
//每次调用方法前执行
@BeforeAll
public void setUp() {
try {
//获取Session
session =HibernateUtil.getSession();
//获取事务并且开启事务
tx =session.beginTransaction();
/**
* 等同于上一句话
* Transcation tx= session.getTranscation();
* tx.begin();
*/
} catch (Exception e) {
e.printStackTrace();
}
}
//每次调用方法后启执行
@After
public void tearDown() {
HibernateUtil.close();
}
//数据添加
@Test
public void testSave()
{
try {
//获取对象
User user =new User();
//更改对象
user.setName("我啊");
user.setAge(22);
//保存数据
session.save(user);
//提交事务
tx.commit();
} catch (Exception e) {
e.printStackTrace();
if(tx!=null){
tx.rollback();
}
}
}
}
测试结果一直报空指针 在session.save(user)这一行,后来我在网上找发现 Junit5版本和Junit4不一样
在Junit5版本中 @Before 应该换成 @BeforAll 且方法应该为静态
这样就不不出错了
补充: