
利用反射:
/// <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) 进行单元测试所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)