c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试

c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试,第1张

概述利用反射: /// <summary> /// 调用静态方法 /// </summary>akf /// <param name="t">类全名</param> /// <paramname="strMethod">方法名</param> /// <paramname="aobjParams">参数

利用反射:

 /// <summary>        /// 调用静态方法        /// </summary>akf        /// <param name="t">类全名</param>        /// <paramname="strMethod">方法名</param>        /// <paramname="aobjParams">参数表</param>        /// <returns>函数返回值</returns>        public static object RunStaticmethod(System.Type t,string strMethod,object[] aobjParams)        {            BindingFlags eFlags =            BindingFlags.Static | BindingFlags.Public |             BindingFlags.NonPublic;            return RunMethod(t,strMethod,null,aobjParams,eFlags);        }        /// <summary>        /// 调用实例方法        /// </summary>        /// <param name="t">类全名</param>        /// <paramname="strMethod">方法名</param>        /// <paramname="objInstance">类的实例</param>        ///<paramname="aobjParams">参数表</param>        ///<returns>函数返回值</returns>        public static object RunInstanceMethod(System.Type t,object objInstance,object[] aobjParams)        {            BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public |             BindingFlags.NonPublic;            return RunMethod(t,objInstance,eFlags);        }        private static object RunMethod(System.Type t,string         strMethod,object[] aobjParams,BindingFlags eFlags)        {            MethodInfo m;            try            {                m = t.getmethod(strMethod,eFlags);                if (m == null)                {                    throw new ArgumentException("There is no method ‘" +                     strMethod + "‘ for type‘" + t.ToString() + "‘.");                }                object objRet = m.Invoke(objInstance,aobjParams);                return objRet;            }            catch            {                throw;            }        }

  

在测试的时候例子:

假如在windows form1中有2个方法,分别是一个静态方法和一个私有实例方法如下:

private static string Staticmethod(string s,int i)        {            return  s+i;                }        private string InstanceMethod(string s,int i)        {            return s + i;        }

  

 

测试代码可以这样调用:

 

[TestMethod]
public voID TestInstanceMethod()
{

Form1 f = new Form1();
//f.msg(f);
//f.button1_Click(null,null);

string ret = "" + RunInstanceMethod(typeof(Form1),"InstanceMethod",f,new object[] { "123",123 });

Assert.AreEqual(ret,"123123");

}


[TestMethod]
public voID TestStaticmethod()
{

string ret = "" + RunStaticmethod(typeof(Form1),"Staticmethod","123123");

}

总结

以上是内存溢出为你收集整理的c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试全部内容,希望文章能够帮你解决c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1214314.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存