如何设置FitNesse以用于基于struts的应用程序?

时间:2013-02-27 11:32:35

标签: struts automated-tests integration-testing fitnesse

我基本上需要调用Struts动作类的execute()方法。这甚至是可能的吗?如果是,我如何为执行调用加载ActionMapping,ActionForm,HttpServletRequest和HttpServletResponse对象。

加载Spring配置:

public class SpringColumnFixture extends ColumnFixture { 
    private static final ApplicationContext appContext = 
         new GenericXmlApplicationContext(new String[]{"classpath:spring/*.xml"});
}

尝试执行测试:

ActionForm form = new IncidentDetailsForm(); 
ActionMapping mapping = new ActionMapping();
HttpServletResponse response = new MockHttpServletResponse(); 

MockHttpServletRequest request = new MockHttpServletRequest() { 
   @Override public String getMethod() { 
       return "GET"; }
}; 

request.setAttribute("userName","****"); 
request.setParameter("userName","****"); 
forward = appContext.getBean(AppLandingAction.class).execute(mapping, form, request, response);

1 个答案:

答案 0 :(得分:0)

终于解决了这个问题。我必须将JAXRPC的所有websphere jar都初始化,并将我的代码更改为以下内容。这有助于我解决问题。

ActionForm form = new ActionForm(){};

        In******Form form1 = new In******Form();
        form1.setActionType("View");

        ActionMapping mapping = new ActionMapping();
        mapping.addForwardConfig(new ActionForward("success","/action/viewCeraHome", false));
        mapping.addForwardConfig(new ActionForward("noLogin","/loginError.jsp", false));

        HttpServletResponse response = new MockHttpServletResponse();
        MockHttpServletRequest request = new MockHttpServletRequest(){
            @Override
            public String getMethod() {
                return "GET"; 
            }

            @Override
            public HttpSession getSession(boolean create) {
                return super.getSession(true);
            }

        };

        request.setAttribute("userName","*****");
        request.setParameter("userName","*****");

        //forward = appContext.getBean(Ap*****Action.class).execute(mapping, form, request, response);
        appContext.getBean(Ap*****Action.class).execute(mapping, form, request, response);
        forward = appContext.getBean(Inc******Action.class).execute(mapping, (ActionForm)form1, request, response);

现在我希望专家们来看看,如果我在Fixture代码中使用的标准是好的,或者我需要采用不同的方法,请告诉我。