c# 单元测试 ,对静态方法(static)和私有方法(private) 进行单元测试
利用反射:
/// <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) 进行单元测试的更多相关文章
- 无所不能的PowerMock,mock私有方法,静态方法,测试私有方法,final类
1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂 ...
- 面向对象之静态方法(static)和实例化方法的区别
这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简 ...
- java接口的演变(jdk8的default、静态方法,jdk9的私有方法、私有静态方法)
目录: 接口的定义 jdk7-9,接口属性的变化 jdk8,default.public static method的提出解决了什么问题,使用时需要注意什么 jdk9的补充(引入private met ...
- Java 静态方法、私有方法、常量的使用
1.静态方法 2.私有方法 3.常量 4.接口小结
- 我要告诉你:java接口中可以定义private私有方法
在传统的Java编程中,被广为人知的一个知识点是:java Interface接口中不能定义private私有方法.只允许我们定义public访问权限的方法.抽象方法或静态方法.但是从Java 9 开 ...
- JUnit 3.8 通过反射测试私有方法
测试私有(private)的方法有两种: 1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳 2)通过反射 (推荐) 代码演示: 目标程序 Priva ...
- Python的程序结构[1] -> 方法/Method[0] -> 类实例方法、私有方法和抽象方法
类实例方法.私有方法和抽象方法 Python中最常用的就是类实例方法,类似于属性中的类实例属性,同时,也存在与私有属性类似方法,即私有方法,下面介绍这两种常见的方法,以及一种特殊意义的类实例方法 -- ...
- junit单元测试中私有方法测试
1.单元测试可以对系统逻辑进行每个单元模块的测试. 2.单元测试也可以作为回归测试的依据,可以避免升级完善功能时引入问题. 3.单元测试要求将代码写的更清晰,更易于测试. 4.有时单元测试需要测试私有 ...
- JavaScript【面向对象】-静态方法-私有方法-公有方法-特权方法
JavaScript面向对象是近年来比较火的一个概念了,由于小弟才疏学浅,虽然做过不少的web项目,看了网上很多深奥的资料和教程,还是对他们深奥 的理论一知半解,前段时间看了点书,总算有了自己的理解, ...
随机推荐
- JS通过sort(),和reverse()正序和倒序
sort()正序 var array1 = [0,1,5,10,15]; array1.sort();//结果为:0,1,10,15,5 请注意,上面的代码没有按照数值的大小对数字进行排序,要 ...
- Django 使用request获取浏览器发送的参数(Django编程-5)
1.url:需要正则去匹配 url(r'^index/(num)/$',view.index) 匹配到的参数会自动传入对应的视图函数 也可以给匹配到的参数起名字?P url(r'^index/(?P& ...
- ArcEngine介绍
一.ArcEngine简介ArcEngine被定位为一个嵌入式的产品,它并非面向最终用户,而是一个面向开发者的产品.对于繁冗的GIS开发工作而言,理想的解决方案是一个基于组件的实用的开发框架,且该框架 ...
- 从FBV到CBV一(开始)
span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }.CodeMirror ...
- 常用数据存储格式之json
常用数据存储格式介绍 JSON: JavaScript Object Notation(JavaScript 对象表示法) JSON 是存储和交换文本信息的语法.类似 XML. JSON 比 XML ...
- 简单了解 TCP TCP/IP HTTP HTTPS
一. 什么是TCP连接的三次握手 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+ ...
- vi 纵向模式编辑
Vim 的纵向编辑模式 vim解读 vi解读 批量删除# 技巧: r 进入修改模式 I 进入行首插入模式 A 进入行尾插入模式 r替换 I前前添加 A后添加 1.多行注释: a. 按下Ctrl + v ...
- 一次NaN引发的npe
# 先上代码 import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class QQ { p ...
- Linux查看端口的连接数
一.查看哪些IP连接本机 netstat -an 二.查看TCP连接数 1)统计80端口连接数 netstat -nat | grep -i "80" | wc -l 2)统计ht ...
- JSP大文件上传断点续传解决方案
我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用. 首先我们需要了解的是上传文件三要素: 1.表单提交方式:post (get方式提交有大小 ...