2

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

2 回答 2

2

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

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

于 2013-03-22T14:49:52.997 回答
0

您可以通过升级到站点full-hibernate-plugin-for-struts2上普遍提供的 2.2.2 版本来解决问题。

使用该版本,您是否使用事务拦截器无法将会话放入堆栈。

于 2013-02-04T16:54:15.960 回答