利用反射:

 /// <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, string strMethod, object objInstance, object[] aobjParams)
{ BindingFlags eFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; return RunMethod(t, strMethod, objInstance, aobjParams, eFlags); } private static object RunMethod(System.Type t, string strMethod, object objInstance, 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", new object[] { "123", 123 });

Assert.AreEqual(ret, "123123");

}

c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试的更多相关文章

  1. 无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类

    1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂 ...

  2. 面向对象之静态方法(static)和实例化方法的区别

    这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简 ...

  3. java接口的演变(jdk8的default、静态方法,jdk9的私有方法、私有静态方法)

    目录: 接口的定义 jdk7-9,接口属性的变化 jdk8,default.public static method的提出解决了什么问题,使用时需要注意什么 jdk9的补充(引入private met ...

  4. Java 静态方法、私有方法、常量的使用

    1.静态方法 2.私有方法 3.常量 4.接口小结

  5. 我要告诉你:java接口中可以定义private私有方法

    在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...

  6. JUnit 3.8 通过反射测试私有方法

    测试私有(private)的方法有两种: 1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳 2)通过反射 (推荐) 代码演示: 目标程序 Priva ...

  7. Python的程序结构[1] -> 方法/Method[0] -> 类实例方法、私有方法和抽象方法

    类实例方法.私有方法和抽象方法 Python中最常用的就是类实例方法,类似于属性中的类实例属性,同时,也存在与私有属性类似方法,即私有方法,下面介绍这两种常见的方法,以及一种特殊意义的类实例方法 -- ...

  8. junit单元测试中私有方法测试

    1.单元测试可以对系统逻辑进行每个单元模块的测试. 2.单元测试也可以作为回归测试的依据,可以避免升级完善功能时引入问题. 3.单元测试要求将代码写的更清晰,更易于测试. 4.有时单元测试需要测试私有 ...

  9. JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法

    JavaScript面向对象是近年来比较火的一个概念了,由于小弟才疏学浅,虽然做过不少的web项目,看了网上很多深奥的资料和教程,还是对他们深奥 的理论一知半解,前段时间看了点书,总算有了自己的理解, ...

随机推荐

  1. Chrome中的插件运用

    1. Postman Java后台开发RPC,还没有没有开始和前端联调,只是想自测下这个RPC,但是有时候RPC的访问入参数据量很大,远远超过get方式访问2k(大多数浏览器通常都会限制url长度在2 ...

  2. wampserver2.2 在window2003下的安装的主要问题

    准备安装最新的wampserver 2.2c,   1.安装问题,安装完成后总是无法启动服务   系统事件中提示错误 找不到附属汇编 Microsoft.VC90.CRT,上一个错误是 参照的汇编没有 ...

  3. deep_learning_Function_tensorflow_unpack()

    tf.unpack(A, axis)是一个解包函数.A是一个需要被解包的对象,axis是一个解包方式的定义,默认是零,如果是零,返回的结果就是按行解包.如果是1,就是按列解包. 例如: from te ...

  4. 求二叉搜索树的第k小的节点

    题目描述: /** * 给定一棵二叉搜索树,请找出其中的第k小的结点. * 例如, (5,3,7,2,4,6,8)中, * 按结点数值大小顺序第三小结点的值为4. * 这是层序遍历: * 5 * 3 ...

  5. l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)

    题目描述 给定一个 NN 个点,MM 条有向边的带非负权图,请你计算从 SS 出发,到每个点的距离. 数据保证你能从 SS 出发到任意点. 输入格式 第一行为三个正整数 N, M, SN,M,S. 第 ...

  6. mysql 存储过程(二)

    存储过程(Stored Procedure): 一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行. 优点(为什 ...

  7. 有关List、Set、Map的基础了解

           刚申请了一个博客,怀着一颗激动的心情我竟不知道写点啥,嗯~来点基础的吧!面试的时候一直被问到的集合框架.        集合,也称为容器,可以将一系列元素组合成一个单元,用于存储.提取. ...

  8. IPC 进程间通信方式——共享内存

    共享内存 共享内存区域是被多个进程共享的一部分物理内存. 多个进程都可以把共享内存映射到自己的虚拟空间.所有用户空间的进程要操作共享内存,都要将其映射到自己的虚拟空间,通过映射的虚拟内存空间地址去操作 ...

  9. 17.hashlib加密

    import hashlib # 摘要算法(加密算法) # md5 密码加密(保存密文)(输入正确的密码,同一个字符串加密之后密文相同) obj = hashlib.md5("sb" ...

  10. 《剑指offer》算法题第三天

    今日题目: 斐波那契数列 青蛙跳台阶问题(及其变种:变态跳台阶) 矩形覆盖 旋转数组的最小数字 矩阵中的路径 机器人的运动范围 细心的同学会发现,第1,2,3题其实对应的是<剑指>书上的同 ...