我在this之后使用Struts 2 JUnit插件测试我的Struts 2 Web应用程序。
在我的Web应用程序中,我使用fullHibernateCore-plugin-1.4
来集成Hibernate功能。
当我测试执行某些hibernate内容的操作时,它会返回NullPointerException
。
根据我的理解,由于Struts 2 JUnit插件使用假容器来执行操作,HibernateSession
不会被解雇。
我该如何解决这个问题?
这是一个测试示例:
public class testRegisterAction extends StrutsTestCase {
public void testGetActionProxy() throws Exception {
//set parameters before calling getActionProxy
request.setParameter("user.name", "TestName");
ActionProxy proxy = getActionProxy("/userRegister.action");
assertNotNull(proxy);
RegistrationAction action = (RegistrationAction) proxy.getAction();
assertNotNull(action);
}
解决
这不是Hibernate错误,而是关于Struts Tiles插件的错误。我正在使用Tiles并且我没有设置proxy.setExecuteResult(false)
,因此JUnit试图执行所有jsp / tiles内容(在操作返回之后)给出错误。在堆栈跟踪中也存在Hibernate错误,因此我认为(错误地)错误是Hibernate的错误。
我解决了设置proxy.setExecuteResult(false)
。
答案 0 :(得分:2)
<强>解决强>
这不是Hibernate错误,而是关于Struts Tiles插件的错误。我正在使用Tiles并且我没有设置proxy.setExecuteResult(false)
,因此JUnit试图执行所有jsp / tiles内容(在操作返回之后)给出错误。在堆栈跟踪中也存在Hibernate错误,因此我认为(错误地)错误是Hibernate的错误。
我解决了设置proxy.setExecuteResult(false)
。
答案 1 :(得分:0)
您可以通过升级到site
上通常提供的2.2.2版来解决问题使用版本是你使用事务拦截器无法将会话放在堆栈上。