我正在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
我认为会议在这里没有任何理由,任何理想?
答案 0 :(得分:0)
在测试期间不要连接数据库。测试应该进行得很轻,最多需要18秒才能运行。应该使用Mockito或PowerMockito,并且应该使用相同的名称。由于jenkins执行许多并行任务,因此UT很可能在本地运行,而不在CI上运行。使用PowerMockito可以修复它