Web服务单元测试

时间:2009-07-21 09:41:55

标签: web-services unit-testing

这是一个有趣的问题,我相信很多人都会从中受益。

典型的Web服务将返回序列化的复杂数据类型,例如:

<orgUnits>
 <orgUnit>
     <name>friendly name</orgUnit>
 </orgUnit>
 <orgUnit>
     <name>friendly name</orgUnit>
 </orgUnit>
</orgUnits>

VS2008单元测试似乎想要断言返回对象的完全匹配,即对象(目标和实际)在结构和内容方面是否相同。

我想要做的只是在结构正常且没有错误的情况下断言。

为了简化问题,在Web服务方法中,如果发生任何错误,我抛出一个SOAPException。

1.有没有办法根据退货状态进行测试 2.最佳案例场景是比较目标和实际结构完整性的文档树,并基于结构是声音而不是内容断言。

提前致谢:)

2 个答案:

答案 0 :(得分:2)

我认为这是WSDL Testing

的副本

在那个答案中,我建议使用SoapUI作为使用

的好工具

答案 1 :(得分:1)

特定于您的要求的答案是比较对象的序列化版本(到XML)而不是对象本身。

在您的测试用例中使用

  1. 假设您希望从您的Web服务返回类似expected.xml的内容。
  2. 调用服务并获得实际的Obj。将其序列化为actual.xml。
  3. 使用像xmldiff这样的库比较actual.xml和expected.xml(比较XML级别的结构/值更改)。
  4. 根据xmldiff的输出确定webservice是否通过了测试。