第二章 使用WSDL更新SOAP项目

第二章     使用WSDL更新SOAP项目

当一个SOAP项目的WSDL被改变,SoapUI可以使用新的定义到:

n  更新port绑定

n  添加新的操作和请求

n  更新请求的endpoints(端点)

本章实例讲解是简历在上一章中,当添加新的web服务操作,如何使用SoapUI操作这些!这时需要提供一个基础的测试驱动实现来支持新的操作。

2.1 操作步骤

         在<chapter 1samples>/soap/invoicev2_impl/wsdl/Invoice_v2.wsdl可以发现新定义的一个createInvoice操作。为了节省编码实现时间,你可以可以复制整个服务代码或者仅仅从<chapter 1samples>/soap/invoicev2_impl中复制需要的java类。

       本章使用的SoapUI项目目录在:<chapter 1 samples>/invoice-soap-v2-soapui-project.xml

         使用新的WSDL和SoapUI的“Update Definition”功能更新SOAP项目后,我们需要去添加新的失败测试给createInvoice操作函数。之后,使用新的WSDL和上一章中所说的方法,生成一个空的web服务stub。最后,我们提供一个基础的实现通过这些失败的测试。

         PS:注意测试用例执行的顺序,如果使用书中自带的实例,需要看下getInvoice是否比createInvoice先执行!

         第一步:使用新的WSDL更新SoapUI项目,在“InvoicePortBinding”进行右击,然后选择“Update Definition”。

        

         在弹出的“UpdateDefinition”窗口输入如下信息,然后点击OK:

 n  定义URL:\SoapUIcook\chapter1\soap\invoicev2_impl\wsdl\invoice_v2.wsdl

 n  勾选“Recreateexiting request with the new schema(使用新的schema重写已有的请求)”

 n  保留默认勾选

 

         第二步:点击OK之后,在弹出的窗口,点击确认。这时候将在InvoicePortBinding显示createInvoice操作和请求。

         第三步:右击“createInvoice”下的请求,在弹出菜单中选择“add a new TestCase”;在弹出的框中下拉选框中选择:

        

         点击确定后,在弹出框中输入测试用例名:CreateInvoice

 第四步:在弹出窗口”AddRequest To TestCase”修改测试用例请求名为“createInvoice”。

 Tips:检查Endpoints,确保所有TestSteups中都指向新的endpointhttp://localhost:9001/ws/invoice/v2。“Update Definition”似乎只更新了绑定接口下的请求endpoints。

 第五步:给invoice_v2.wsdl生成一个新的空web服务操作步骤与上一张相同,使用Tools|Apache CXF,操作完成截图:

 第六步:启动生成的invoicev2服务,由于wsdl文件中http://soapui.cookbook.samples/contract/invoice无法连接,因此现在用实例中已进生成的:

 第七步:如果现在如下这些测试:

 Ø  由于没有给createInvoice测试步骤设置任何断言,所以执行该测试将会成功!

 Ø  getInvoice测试将运行失败,因为之前的实现和现在生成的invoice v2服务的代码不是同一部分!

 第八步:接下来给creatInvoice测试步骤添加断言。设置与getInvoice步骤相同的值给createInvoice步骤请求中,然后添加断言来检查invoiceNo值是否是12345:

 

 第九步:重新运行测试:

 Ø  createInvoice测试步骤依然能够执行成功,由于apache-cxf生成的代码把请求的invoiceNo传递给响应

 Ø  getInvoice测试如逾期一样也不能通过测试

 第十步:提供一个简单的服务实现,通过存储在请求与允许它们被检索涉及多于在以前部分的一点的编码之间的invoice详细信息。所以要留在SoapUI的范围,所以在本章例子中保留了一个完整的实例服务。如果已经在步骤5中生成了新的空web服务stub,然后你还需要如下一些java代码:

 l  InvoicePortImpl.java:提供main函数

 l  Invoice.java:这提供一个JavaBean来存储invoice的详细信息

 更多的信息,在下一部分涉及。

 第十一步:重新编译和重新启动服务。

 第十二步:重新运行测试,这时都能通过。

         在该部分主要讲述如何使用“updatedefinition”功能以及该功能对于更新可以做什么和不能做什么。

         和上一章类似,本部分也只是使用了一个基本的服务实现来通过测试用例。服务实施的主要部分如下:

  当对createInvoice操作创建一个请求时,InvoicePortImpl.createInvoice方法从请求中获取invoice的详细信息,然后存储这些详细信息(Invoice.java)到一个key为“invoiceNo的值”的HashMap上。InvoiceNo的值通过一个确认响应返回。

  当SoapUI给getInvoice操作创建一个请求时,InvoicePortImpl.getInvoice方法使用请求中的invoiceNo的值来检索HashMap(与Invoice.java)中invoice的详细信息并在SoapUI的响应中返回invoice的详细信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值