解决使用JUNIT测试DAO事务一直ROLL BACK问题

本文介绍了一个使用Spring JUnit4进行数据库操作测试的例子,演示了如何通过CustomerRepository接口执行保存和查询操作,并使用@Transactional注解确保每个测试方法之后事务都会被回滚。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 1 package com.ithheima.repository;
 2 
 3 import org.junit.Test;
 4 import org.junit.runner.RunWith;
 5 import org.springframework.beans.factory.annotation.Autowired;
 6 import org.springframework.test.annotation.Rollback;
 7 import org.springframework.test.context.ContextConfiguration;
 8 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 9 import org.springframework.transaction.annotation.Propagation;
10 import org.springframework.transaction.annotation.Transactional;
11 
12 import com.itheima.entity.Customer;
13 import com.itheima.repository.CustomerRepository;
14 
15 @RunWith(SpringJUnit4ClassRunner.class)
16 @ContextConfiguration("classpath:applicationContext.xml")
17 @Transactional(propagation=Propagation.REQUIRED)
18 public class CustomerRepositoryTest {
19 
20     @Autowired
21     private CustomerRepository cr;
22     
23     @Test
24     public void testSave() {
25         Customer c = new Customer();
26         c.setName("测试");
27         cr.save(c);
28         System.out.println(c);
29     }
30     
31     @Test
32     public void testGet() {
33         Customer c = cr.findOne(7);
34         System.out.println(c);
35     }
36 
37 }

每一次执行完后都会有事务回滚。

解决办法:在测试用例类上或者测试方法上@Rollback(false)

11:24:11,252 DEBUG ResourceRegistryStandardImpl:104 - HHH000387: ResultSet's statement was not registered
Customer [id=12, name=测试, orders=null]
11:24:11,254 DEBUG TransactionImpl:86 - rolling back
11:24:11,263 DEBUG SessionFactoryImpl:1052 - HHH000031: Closing
11:24:11,264 DEBUG AbstractServiceRegistryImpl:389 - Implicitly destroying ServiceRegistry on de-registration of all child ServiceRegistries
11:24:11,264 DEBUG BootstrapServiceRegistryImpl:286 - Implicitly destroying Boot-strap registry on de-registration of all child ServiceRegistries
11:24:11,265 DEBUG EntityManagerFactoryRegistry:91 - Remove: name=default

转载于:https://www.cnblogs.com/ilovezihan/p/7258636.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值