为什么Junit案件在詹金斯失败,但在我当地成功

时间:2014-02-27 21:15:07

标签: java hibernate junit jenkins hibernate-session

我正在jenkins上运行一些junit测试用例,但其中一些在jenkins上失败了,但是我让它们在我的本地笔记本电脑上成功运行。org.hibernate.SessionException: Session is closed! at org.hibernate.impl.AbstractSessionImpl.errorIfClosed(AbstractSessionImpl.java:72) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1688) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:347) at com.test.ui.struts.module.config.ReadAction.executeImpl(ReadAction.java:144) at com.test.ui.struts.module.config.CrudDataAction.execute(CrudDataAction.java:120)

以下是我在ReadAction.java中的代码

 session = sf.getCurrentSession();
    try
    {
        if (!session.getTransaction().isActive())
            session.beginTransaction();
        Criteria c = session.createCriteria(metaBean.getEntityName());
        setProjection(metaBean, c);

        // fetch 1 more row than we can return to see if we have limited the result set
        c.setMaxResults(_maxRows + 1);
        c.add(getRestrictions(metaBean, reqBean));
        List result = c.list();//This is line 144

我认为会议在这里没有任何理由,任何理想?

1 个答案:

答案 0 :(得分:0)

在测试期间不要连接数据库。测试应该进行得很轻,最多需要18秒才能运行。应该使用Mockito或PowerMockito,并且应该使用相同的名称。由于jenkins执行许多并行任务,因此UT很可能在本地运行,而不在CI上运行。使用PowerMockito可以修复它