Spring Junit4 Test
2016-03-21 12:09
387 查看
捣鼓了差不多一天。。。终于把"No Session found for current thread"问题解决了
环境:Spring 4.0.6 RELEASE + Hibernate 4.2.2 Final
折腾记录如下:
1. 出现"No Session found for current thread",查找配置文件中的sessionFactory配置,确认无误;
2. 检查写的测试用例,并尝试修改注解:@Transactional和@TransactionConfiguration,没解决;
3. 再检查DAO层代码和对应的entity,确认没问题;
4. 搜索"No Session found for current thread",有人说是配置文件中需要加上<prop key="hibernate.current_session_context_class">thread</prop>
试了,结果没有了"No Session found for current thread",但是出现了"HibernateException: contains is not valid without active transaction",表明没有事务,错误更大了。
5. 接着搜索,找到如下blogs:
http://www.iteye.com/topic/1126047
根据以上博客内容,加上Service层代码,并测试通过,郁闷了。。。
http://blog.csdn.net/funi16/article/details/8691575
在看到这个博客后,噢了一声,果断把extends AbstractJUnit4SpringContextTests换成extends AbstractTransactionalJUnit4SpringContextTests,这才把事务管理加进来了,也可以回滚了!
环境:Spring 4.0.6 RELEASE + Hibernate 4.2.2 Final
折腾记录如下:
1. 出现"No Session found for current thread",查找配置文件中的sessionFactory配置,确认无误;
2. 检查写的测试用例,并尝试修改注解:@Transactional和@TransactionConfiguration,没解决;
3. 再检查DAO层代码和对应的entity,确认没问题;
4. 搜索"No Session found for current thread",有人说是配置文件中需要加上<prop key="hibernate.current_session_context_class">thread</prop>
试了,结果没有了"No Session found for current thread",但是出现了"HibernateException: contains is not valid without active transaction",表明没有事务,错误更大了。
5. 接着搜索,找到如下blogs:
http://www.iteye.com/topic/1126047
根据以上博客内容,加上Service层代码,并测试通过,郁闷了。。。
http://blog.csdn.net/funi16/article/details/8691575
在看到这个博客后,噢了一声,果断把extends AbstractJUnit4SpringContextTests换成extends AbstractTransactionalJUnit4SpringContextTests,这才把事务管理加进来了,也可以回滚了!
@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath:applicationContext_persistence.xml") @TransactionConfiguration(transactionManager = "transactionManager",defaultRollback = true) public class ActionDAOImplTest extends AbstractTransactionalJUnit4SpringContextTests { @Autowired private ActionService actionServiceImpl; @Autowired private ActionDAO actionDAOImpl; @Test //@Rollback public void testAdd() throws Exception { Action action = new Action(); action.setLoginDate(new Date()); Thread.sleep(2000); action.setLogoffDate(new Date()); action.setUserName("chris"); action.setOperation("add;update;select"); actionServiceImpl.recordAction(action); Action lookUpOne = actionServiceImpl.checkAction(4); Assert.assertEquals("right","add;update;select",lookUpOne.getOperation()); } @Test @Rollback(value = false) public void testAdd2() throws Exception { Action action = new Action(); action.setLoginDate(new Date()); Thread.sleep(2000); action.setLogoffDate(new Date()); action.setUserName("chris"); action.setOperation("add;update;select"); actionDAOImpl.save(action); Action lookUpOne = actionDAOImpl.find(8); Assert.assertEquals("right","add;update;select",lookUpOne.getOperation()); } }
相关文章推荐
- 回溯算法解八皇后问题(java版)
- Java字符串之性能优化
- Spring注解配置定时任务<task:annotation-driven/>
- Intellij 的maven工程在sources目录中使用 @Test
- spring Bean基本配置及注解
- 在Eclipse上打包并使用Proguard工具混淆jar包
- 解决Eclipse复制粘贴出现卡屏的问题
- 40个Java多线程问题总结
- SpringMVC项目搭建
- 【JAVA】PL/SQL连接:ORA-12154:TNS:无法解析指定的连接标识符
- JAVA中Collection接口和Map接口的主要实现类
- activeMQ和spring的整合
- 2016.03.21 java web摘抄
- 浅谈Java中的hashcode方法
- Java并发编程(一)——线程
- Eclipse中syso 快捷键 Alt + / 设置
- Spring MVC原理图
- java作用域public ,private ,protected 及不写时的区别
- Spring使用DAO完成数据库操作
- [Java虚拟机]Java内存模型与线程