Web Service测试小工具(包含源代码)

发表于:2008-2-25 18:16

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

 作者:未知    来源:网络转载

        Web Service相信大家都很熟悉,当多个系统间的交互非常频繁的时候,开发过程中总是需要对web service进行测试,确保web service能正常运行。常用的方法是输入web service地址进行测试,但是webservice经常会部署在其他的机器上,不能进行直接测试,只能通过编写测试代码进行测试了,这样感觉非常繁琐。这里我们可以通过动态调用web service来进行测试。

动态调用web service方法

public static object InvokeWebService(string url, string methodname, object[] args)
        
{
            
try
            
{
                
string @namespace = "WebService.DynamicWebCalling";
                
string[] parts = url.Split('/');
                
string[] pps = parts[parts.Length - 1].Split('.');
                
string classname = pps[0];
                System.Net.WebClient wc 
= new System.Net.WebClient();
                System.IO.Stream stream 
= wc.OpenRead(url + "?WSDL");
                System.Web.Services.Description.ServiceDescription sd 
= System.Web.Services.Description.ServiceDescription.Read(stream);
                System.Web.Services.Description.ServiceDescriptionImporter sdi 
= new System.Web.Services.Description.ServiceDescriptionImporter();
                sdi.AddServiceDescription(sd, 
"""");
                System.CodeDom.CodeNamespace cn 
= new System.CodeDom.CodeNamespace(@namespace);
                System.CodeDom.CodeCompileUnit ccu 
= new System.CodeDom.CodeCompileUnit();
                ccu.Namespaces.Add(cn);
                sdi.Import(cn, ccu);

                Microsoft.CSharp.CSharpCodeProvider csc 
= new Microsoft.CSharp.CSharpCodeProvider();
                System.CodeDom.Compiler.ICodeCompiler icc 
= csc.CreateCompiler();

                System.CodeDom.Compiler.CompilerParameters cplist 
= new System.CodeDom.Compiler.CompilerParameters();
                cplist.GenerateExecutable 
= false;
                cplist.GenerateInMemory 
= true;
                cplist.ReferencedAssemblies.Add(
"System.dll");
                cplist.ReferencedAssemblies.Add(
"System.XML.dll");
                cplist.ReferencedAssemblies.Add(
"System.Web.Services.dll");
                cplist.ReferencedAssemblies.Add(
"System.Data.dll");

                System.CodeDom.Compiler.CompilerResults cr 
= icc.CompileAssemblyFromDom(cplist, ccu);
                
if (true == cr.Errors.HasErrors)
                
{
                    System.Text.StringBuilder sb 
= new System.Text.StringBuilder();
                    
foreach (System.CodeDom.Compiler.CompilerError ce in cr.Errors)
                    
{
                        sb.Append(ce.ToString());
                        sb.Append(System.Environment.NewLine);
                    }

                    
throw new Exception(sb.ToString());
                }

                System.Reflection.Assembly assembly 
= cr.CompiledAssembly;
                Type t 
= assembly.GetType(@namespace + "." + classname, truetrue);
                
object obj = Activator.CreateInstance(t);
                System.Reflection.MethodInfo mi 
= t.GetMethod(methodname);
                
return mi.Invoke(obj, args);
            }

            
catch (Exception ex)
            
{
                
throw ex;
            }

        }

程序运行界面

       bb

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • jon_zhang11
    2013-3-25 15:41:39

    能不能把具体编译和运行步骤 写上啊,谢谢

  • zibohe0
    2008-2-26 11:36:36

    请问,能把这个小工具发给我 共享下嘛?

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号