当junit5测式类类名以Test开头时
public class Testadsdasd {
private SqlSession sqlSession;
@BeforeEach
public void init() throws IOException {
sqlSession = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-config.xml"))
.openSession();
}
@Test
public void testQueryOrderById() throws IOException {
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
Order order = mapper.queryOrderById(1);
System.out.println("order = " + order);
}
@AfterEach
public void closeAll(){
sqlSession.commit();
sqlSession.close();
}
}
在使用了AfterEach或BeforEach注解后,@Test中无法使用sqlSession报错
There are test failures.
Please refer to G:\IdeaProjects\test444maybaits\som\target\surefire-reports for the individual test results.
查找xml中的报错信息后
说是sqlSession为空
修改类名字后
public class asdasdasdsa {
private SqlSession sqlSession;
@BeforeEach
public void init() throws IOException {
sqlSession = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsStream("mybatis-config.xml"))
.openSession();
}
@Test
public void testQueryOrderById() throws IOException {
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
Order order = mapper.queryOrderById(1);
System.out.println("order = " + order);
}
@AfterEach
public void closeAll(){
sqlSession.commit();
sqlSession.close();
}
}
正常运行
order = Order(orderId=1, orderName=o1, customerId=1, customer=Customer(customerId=1, customerName=c01, orders=null))
更离谱的是
把sqlSession的使用放到AfterEach之后
@AfterEach
public void closeAll(){
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
Order order = mapper.queryOrderById(1);
System.out.println("order = " + order);
sqlSession.commit();
sqlSession.close();
}
又正常了 没事了:)
总结
不知道原因,有大佬知道的话,求解答
但是知道了junit5.3.1测试类类名不能以Test开头,如果以Test开头,@Test下的内容会被单独隔开,不能使用@BeforeEach写好的东西