关于web service的测试

2011-04-17  蔡秋亮 

最近一直在做关于webservice相关的测试,Java开发webservice一般用xfire,axis,cxf,其中axis支持多语言开发但是不支持与spring的集成,cxf其实是xfire的2.0版本,他们都支持与spring的集成,但是用xfire开发的服务端接口没法用cxf调用,这点让我非常的纳闷,既然是cxf是xfire的2.0版本为什么又不能被cxf调用,当然也不能被axis2调用。
一般情况下我们可以使用soapUI做webservice的接口测试,但是在此我要介绍一种全新的方式,当然也是我自创的,首先我们可以自己利用xfire,axis2,cxf写出webservice客户端,以上三种开源工具都提供eclipse插件,可以利用这些插件根据相应的wsdl生成客户端,也可以利用这三种控件自己写出客户端,建议还是自己写吧,网上有很多例子,自己写的客户端也比生成的客户端要简单的多,利用自己写好的客户端,进行简单的封装就可调度相应的webservice接口,接下去就可以利用你的测试框架如junit,testNG,Fitnesse等等进行自动化测试,本人强烈建议web service的接口用自动化实现,因为这一块的接口代码变化会非常的小,所以自动化脚本的维护成本也会非常小,一旦这块自动化做成将会给测试组的工作效率提升,测试用例丰富齐全后就可以放到hudson,cruisecontrol上做持续集成,效果会非常良好!
418°/4131 人阅读/5 条评论 发表评论

孙锋  2011-04-18

有代码示例没?show一个


蔡秋亮  2011-04-18

这个是cxf的客户端代码,其他的就不一一介绍了,网上有很多,可以自己发布一个webservice玩玩就明白了!
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.getInInterceptors().add(new LoggingInInterceptor());     
        factory.getOutInterceptors().add(new LoggingOutInterceptor());   
        factory.setServiceClass(Helloworld.class);
Request request = new Request();

          factory.setAddress("http://xxxx/service");     
          HelloWorld client = (HelloWorld) factory.create();     
          Response response = client.getFee(request);     
                System.out.println(response);


雷佩  2011-04-18

呃,没username token ,signature方式的?


蔡秋亮  2011-04-19

雷佩: 呃,没username token ,signature方式的?
你是指server端呢,还是客户端


雷佩  2011-04-20

蔡秋亮: 你是指server端呢,还是客户端
当然是client端的实现了...


登录 后发表评论