我正在使用Struts 2 JUnit插件测试我的Struts 2 Web应用程序,遵循Unit Testing。
在我的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);
}
2条答案
按热度按时间d7v8vwbk1#
这不是一个Hibernate错误,而是一个关于Struts Tiles插件的错误。我使用的是Tiles,我没有设置
proxy.setExecuteResult(false)
,所以JUnit试图执行所有的jsp/tiles的东西(在动作返回后)给出错误。在stacktrace中也有Hibernate错误,所以我(错误地)认为错误是Hibernate的东西。我解决了设置
proxy.setExecuteResult(false)
。xfyts7mz2#
您可以通过升级到网站full-hibernate-plugin-for-struts2上的2.2.2版本来解决这个问题。
在这个版本中,你使用的事务拦截器无法将会话放在堆栈上。