0

我有一些 junit 测试用例在 jenkins 上运行,但其中一些在 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

我看不出有什么理由让会议在这里结束,有什么理想的吗?

4

1 回答 1

0

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

于 2018-09-04T10:18:57.500 回答