Webservice通过代码进行单元测试的三种方式,你使用哪种?

发表于:2020-12-22 10:31

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:crazyCodeLove    来源:博客园

  一、基于代理类工厂
  核心代码很简单,如下所示(这个比较普遍常用):
  try {
             // 接口地址(写webservice的地址)
             String address = "http://127.0.0.1:9090/cxf/user?wsdl";
             // 代理工厂
             JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
             // 设置代理地址
             jaxWsProxyFactoryBean.setAddress(address);
             // 设置接口类型
             jaxWsProxyFactoryBean.setServiceClass(UserService.class);
             // 创建一个代理接口实现
             UserService userService = (UserService) jaxWsProxyFactoryBean.create();
             return userService.addUser(email, username, password);
         } catch (Exception e) {
             e.printStackTrace();
             return -1;
         }
  二、动态调用
  // 创建动态客户端
  JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
  //接口地址
  Client client = dcf.createClient("http://127.0.0.1/cxf/user?wsdl");
  // 需要密码的情况需要加上用户名和密码
  // client.getOutInterceptors().add(new ClientLoginInterceptor(USER_NAME, PASS_WORD));
  Object[] objects = new Object[0];
  try {
      // invoke("方法名",参数1,参数2,参数3....);
      objects = client.invoke("getUserName", "maple");
      System.out.println("返回数据:" + objects[0]);
  } catch (java.lang.Exception e) {
      e.printStackTrace();
  }
  三、通过Controller调用
  具体的代码例子如下:
  ackage com.blog.cxf.client.controller;
  import com.blog.cxf.server.dto.UserReqDto;
  import com.blog.cxf.server.service.UserService;
  import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
  import org.springframework.web.bind.annotation.*;
  /**
   * @description:
   * @author: youcong
   * @time: 2020/10/24 23:37
   */
  @RestController
  @RequestMapping("/user")
  public class UserApiController {
      @PostMapping("/add")
      public int add(@RequestParam String email, @RequestParam String username, @RequestParam String password) {
          try {
              // 接口地址
              String address = "http://127.0.0.1:9090/cxf/user?wsdl";
              // 代理工厂
              JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
              // 设置代理地址
              jaxWsProxyFactoryBean.setAddress(address);
              // 设置接口类型
              jaxWsProxyFactoryBean.setServiceClass(UserService.class);
              // 创建一个代理接口实现
              UserService userService = (UserService) jaxWsProxyFactoryBean.create();
              return userService.addUser(email, username, password);
          } catch (Exception e) {
              e.printStackTrace();
              return -1;
          }
      }
  }
  至于其它服务调用,可以通过Feign,也可以基于HtppClient。
  至于上面三种哪种更好,具体看实际业务场景而定。可以根据自己的需求来选择。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号