zoukankan      html  css  js  c++  java
  • Spring Junit4 Test

    捣鼓了差不多一天。。。终于把"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,这才把事务管理加进来了,也可以回滚了!

    @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());
        }
    }
    清醒时做事,糊涂时读书,大怒时睡觉,独处时思考; 做一个幸福的人,读书,旅行,努力工作,关心身体和心情,成为最好的自己 -- 共勉
  • 相关阅读:
    idea安装好python后显示无SDK问题
    使用idea在windows上连接远程hadoop开发_配置环境
    最小二乘法估计----MATLAB最小二乘法求一元线性回归
    MATLAB最小二乘法求线性回归
    MATLAB求解线性规划(含整数规划和0-1规划)问题
    蒙特卡洛方法蒙特卡洛方法 matlab 实现 matlab 实现
    MATLAB神经网络实例及训练结果各参数解释
    单元格添加斜线
    ppt的高级设计法——虚实结合
    word中插入六角括号的方法﹝﹞
  • 原文地址:https://www.cnblogs.com/hello-yz/p/5301318.html
Copyright © 2011-2022 走看看