在Struts2 + Spring项目中通过StrutsSpringTestCase调用拦截器

时间:2014-02-03 09:36:45

标签: java spring struts2

通过StrutsSpringTestCase对测试用例的要求是:如果我调用Action类的任何方法,那么应该自动调用拦截器,Validate,prep和prepare方法。

在实际场景中,只调用我通过代理对象调用的方法。我在下面添加了代码段。

import org.apache.struts2.StrutsSpringTestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.opensymphony.xwork2.ActionProxy;

@ContextConfiguration(locations = { "classpath:test-applicationContext.xml", "classpath*:applicationContext.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class TestMyProfilePage extends StrutsSpringTestCase
{
    @Test
    public void testExecute() throws Exception
    {
        ActionProxy proxy = getActionProxy("/secure/profile_process.action");
        ProfileAction profileProxy = (ProfileAction) proxy.getAction();
        profileProxy.setAppointmentDateCode("09/27/2011:D:8AM-12PM");

        String result = profileProxy.execute();
        assertEquals(result, "success");
    }
}

请帮帮我。

1 个答案:

答案 0 :(得分:0)

我有解决方案。实际上我是在将代理对象强制转换为我的动作类对象之后调用该方法。 但是如果我直接通过代理对象调用它,那么它会调用给定uri的所有拦截器(“/ secure / profile_process.action”),甚至可以为我的动作类准备方法。

以下是代码段。

 @Test
    public void testExecute() throws Exception
    {
        ActionProxy proxy = getActionProxy("/secure/profile_process.action");
        ProfileAction profileProxy = (ProfileAction) proxy.getAction();
        profileProxy.setAppointmentDateCode("09/27/2011:D:8AM-12PM");

        String result = proxy.execute();
        assertEquals(result, "success");
    }

干杯......谢谢你