Struts 2 JUnit插件+ Hibernate

hujrc8aj  于 2023-10-20  发布在  其他
关注(0)|答案(2)|浏览(81)

我正在使用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);
        
}
d7v8vwbk

d7v8vwbk1#

这不是一个Hibernate错误,而是一个关于Struts Tiles插件的错误。我使用的是Tiles,我没有设置proxy.setExecuteResult(false),所以JUnit试图执行所有的jsp/tiles的东西(在动作返回后)给出错误。在stacktrace中也有Hibernate错误,所以我(错误地)认为错误是Hibernate的东西。
我解决了设置proxy.setExecuteResult(false)

xfyts7mz

xfyts7mz2#

您可以通过升级到网站full-hibernate-plugin-for-struts2上的2.2.2版本来解决这个问题。
在这个版本中,你使用的事务拦截器无法将会话放在堆栈上。

相关问题