问候, 我想编写一个单元测试,以确保我们的Web服务没有更改上一个已知发布版本的WSDL。原因是因为对WSDL中对象的任何更改都将导致使用Apache Axis的客户端失败。即使您所做的只是添加一个不需要的属性。因此,如果存在更改,则需要提醒开发人员,因为产品管理需要与客户沟通有关更改的信息,以便他们可以在发布新WSDL时重新编译其存根。
所以我希望有这样的东西:
[Test]
public void TheWSDLHasNotChanged(){
XmlDocument currentWSDL = SomeMysteryServiceIDontKnowAbout.GetWSDLForWebServiceClass(typeof(UserService));
XmlDocument existingWSDL = new XmlDocument().Load("ExistingWsdl.wsdl");
Assert.That(currentWSDL, Is.Equal.To(existingWSDL));
}
出于显而易见的原因,我不想向Web服务器发出请求(在运行单元测试时可能会运行甚至不运行)。
答案 0 :(得分:3)
从程序集生成WSDL:
对于WCF,请使用SvcUtil.exe。见MSDN HowTo
对于ASP.NET,请使用ServiceDescriptionReflector。请参阅本指南:http://craigandera.blogspot.se/2004/10/generating-wsdl-without-aspnet_18.html
抱歉,我在第一个回答中误解了您的代码段。
答案 1 :(得分:2)
我创建了一个工具,可以从包含一个或多个WebServices的已编译c#程序集(dll)生成WSDL文件。通常,您需要一个运行服务(IIS或其他)来托管.asmx,以便您可以使用/MyWebService.asmx?wsdl
检索WSDL。此工具使用反射生成WSDL文件,以从程序集(dll)中检索所有信息。
可以在http://wsdlgenerator.codeplex.com
找到下载和源代码欢迎任何提示和提示!
- 燕姿