首页 > 软件开发 > 编程语言 >

怎么编写action的单元测试

来源:互联网 2023-03-17 00:22:04 444

通常在开发web应用过程中,展现层Action的单元测试很少人对他有所了解,我们今天看看怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

工具/原料

  • action
  • 电脑

方法/步骤

  • 1

    基于struts的mock和webwork的ActionProxyFactory都可以进行action的单元测试。QHj办公区 - 实用经验教程分享!

    比较建议用ActionProxyFactory做单元测试QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 2

    写action单元测试非常简单,分三步就可以完成单元测试。QHj办公区 - 实用经验教程分享!

    第一步:QHj办公区 - 实用经验教程分享!

    设置actionContext上下文参数QHj办公区 - 实用经验教程分享!

    将表单传递的请求参数添加到map中QHj办公区 - 实用经验教程分享!

    详细用例参考:QHj办公区 - 实用经验教程分享!

    public class TestActionTest extends BaseCaseTest{QHj办公区 - 实用经验教程分享!

    private ActionProxy proxy = null;QHj办公区 - 实用经验教程分享!

    private IVoucherService voucherService;QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 3

    第二步QHj办公区 - 实用经验教程分享!

    创建action动态代理对象QHj办公区 - 实用经验教程分享!

    通过public abstract ActionProxy createActionProxy(String namespace, String actionName, Map extraContext) throws Exception 创建action代理对象。QHj办公区 - 实用经验教程分享!

    @BeforeQHj办公区 - 实用经验教程分享!

    public void setUp() throws Exception {QHj办公区 - 实用经验教程分享!

    IMocksControl control = EasyMock.createControl();QHj办公区 - 实用经验教程分享!

    voucherService = control.createMock(IVoucherService.class);QHj办公区 - 实用经验教程分享!

    MapString, Object> params = new HashMapString, Object>();QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 4

    第三步:QHj办公区 - 实用经验教程分享!

    junit断言执行结果QHj办公区 - 实用经验教程分享!

    assertEquals(testAction.login(),"success")QHj办公区 - 实用经验教程分享!

    params.put(”loginId”,”test”);QHj办公区 - 实用经验教程分享!

    params.put(”password”,”111111″);QHj办公区 - 实用经验教程分享!

    params.put(”voucherService”, voucherService);QHj办公区 - 实用经验教程分享!

    Map extraContext = new HashMap();QHj办公区 - 实用经验教程分享!

    extraContext.put(ActionContext.PARAMETERS,params);QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 4该信息非法爬取自百度经验
  • 5

    创建代理action一定要执行proxy.execute()方法,否则参数不能够增加到actionContext上下文中。QHj办公区 - 实用经验教程分享!

    try {QHj办公区 - 实用经验教程分享!

    proxy = ActionProxyFactory.getFactory().createActionProxy(”/user”, “testAction”, extraContext);QHj办公区 - 实用经验教程分享!

    proxy.setExecuteResult(false);QHj办公区 - 实用经验教程分享!

    assertEquals(proxy.execute(),”success”);QHj办公区 - 实用经验教程分享!

    } catch (Exception e) {QHj办公区 - 实用经验教程分享!

    e.printStackTrace();QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 6

    proxy.execute()中会执行 invocation.invoke()核心方法,遍历执行action中所有的拦截器,包括其中的参数拦截器。QHj办公区 - 实用经验教程分享!

    @TestQHj办公区 - 实用经验教程分享!

    public void testLogin() {QHj办公区 - 实用经验教程分享!

    TestAction testAction = (TestAction) proxy.getAction();QHj办公区 - 实用经验教程分享!

    assertEquals(testAction.login(),”success”);QHj办公区 - 实用经验教程分享!

    怎么编写action的单元测试QHj办公区 - 实用经验教程分享!

  • 注意事项

    • 切勿抄袭
    • 本人原创

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!QHj办公区 - 实用经验教程分享!


    标签: 编程语言编程

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码