Struts 2 JUnit插件+ Hibernate

时间:2013-01-31 14:25:56

标签: hibernate struts2 junit struts2-s2hibernate struts2-junit-plugin

我在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)

2 个答案:

答案 0 :(得分:2)

<强>解决

这不是Hibernate错误,而是关于Struts Tiles插件的错误。我正在使用Tiles并且我没有设置proxy.setExecuteResult(false),因此JUnit试图执行所有jsp / tiles内容(在操作返回之后)给出错误。在堆栈跟踪中也存在Hibernate错误,因此我认为(错误地)错误是Hibernate的错误。

我解决了设置proxy.setExecuteResult(false)

答案 1 :(得分:0)

您可以通过升级到site

上通常提供的2.2.2版来解决问题

使用版本是你使用事务拦截器无法将会话放在堆栈上。