怎么编写action的单元测试

https://jingyan.baidu.com/article/ed15cb1b9406a01be36981c0.html

通常在开发web应用过程中,展现层Action的单元测试很少人对他有所了解,我们今天看看怎么编写action的单元测试

工具/原料

 
  • action
  • 电脑

方法/步骤

 
  1.  

    基于struts的mock和webwork的ActionProxyFactory都可以进行action的单元测试。

    比较建议用ActionProxyFactory做单元测试

    怎么编写action的单元测试
  2.  

    写action单元测试非常简单,分三步就可以完成单元测试。

    第一步:

    设置actionContext上下文参数

     将表单传递的请求参数添加到map中

    详细用例参考:

    public class TestActionTest extends BaseCaseTest{

    private ActionProxy proxy = null;

    private IVoucherService voucherService;

    怎么编写action的单元测试
  3.  

    第二步

    创建action动态代理对象

        通过public abstract ActionProxy createActionProxy(String namespace, String actionName, Map extraContext) throws Exception 创建action代理对象。

    @Before

    public void setUp() throws Exception {

    IMocksControl control = EasyMock.createControl();

    voucherService = control.createMock(IVoucherService.class);

    Map<String, Object> params = new HashMap<String, Object>();

    怎么编写action的单元测试
  4.  

    第三步:

    junit断言执行结果

      assertEquals(testAction.login(),"success")

    params.put(”loginId”,”test”);

    params.put(”password”,”111111″);

    params.put(”voucherService”, voucherService);

    Map extraContext = new HashMap();

    extraContext.put(ActionContext.PARAMETERS,params);

    怎么编写action的单元测试
  5.  

    创建代理action一定要执行proxy.execute()方法,否则参数不能够增加到actionContext上下文中。

    try {

    proxy = ActionProxyFactory.getFactory().createActionProxy(”/user”, “testAction”, extraContext);

    proxy.setExecuteResult(false);

    assertEquals(proxy.execute(),”success”);

    } catch (Exception e) {

    e.printStackTrace();

    怎么编写action的单元测试
  6.  

    proxy.execute()中会执行 invocation.invoke()核心方法,遍历执行action中所有的拦截器,包括其中的参数拦截器。

    @Test

    public void testLogin() {

    TestAction testAction = (TestAction) proxy.getAction();

    assertEquals(testAction.login(),”success”);

    怎么编写action的单元测试
posted @ 2020-11-25 09:23  bestsarah  阅读(321)  评论(0)    收藏  举报