.Net 中如何测试静态方法
大部分Mokc框架是不支持mock静态方法的,那我们如何测试静态方法呢?
下面这个类包含了一个静态方法:
public class MyHelper
{public static string GetHelp(){return "This is help";}
}
这个类调用了上面的Helper类中的静态方法
public class MyManager
{public bool IsManaged { get; set; }public void Manage(){string help = MyHelper.GetHelp();IsManaged = (!string.IsNullOrEmpty(help));}
}
如果我们需要测试MyManager类,那么我们就需要mock MyHelper.GetHelp() 方法,因为MyHelper类我们无法从外面传入,也无法时候用mock框架来mock。这个类得Manage()方法变得无法测试。
解决方案:
1,如果所有代码你都可以修改,那么,最简单的方法就是避免静态方法,将静态方法转移到一个实体类中,并且使用interface隔离接口和实现逻辑。
2,如果静态方法你无法修改,比如说是系统提供的帮助类,那么将静态方法转移到一个实体类中,但是使用一个代理函数调用静态方法,并且使用interface隔离接口和实现逻辑。
3,如果静态方法你无法修改,还有一个比较快的方法就是,增加一个protected virtual 的成员方法,代理调用静态方法。测试时,override 这个方法。
一些问题:
如何mock你要测试类中的一些方法?
有一些时候,你测试某个类中的一个方法,这方法会调用这个类中的其他成员方法,处于某种原因,对于这些依赖的成员方法,你也许想mock出来。
如何mock一个private方法?
参考:
TDD: Mock static method
MoQ Mocks – Use virtual method or interfaces?
How to mock static class or static member for testing
转载于:https://www.cnblogs.com/DotNetNuke/archive/2011/04/13/2014826.html
.Net 中如何测试静态方法相关推荐
- 第32节:Java中-构造函数,静态方法,继承,封装,多态,包
构造函数实例 class Cat{// 设置私有的属性 name private String name;// 设置name的方法public void setName(String Name) {t ...
- Exception in thread main java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static;只能在静态类型或顶级类型中才能声明静态方法
Exception in thread "main" java.lang.Error: 无法解析的编译问题: 方法 main 不能声明为 static:只能在静态类型或顶级类型中才 ...
- 测试驱动开发与行为驱动开发中的测试先行方法
Gil Zilberfeld将在 Agile Practitioners会议上举办小型研讨会,讨论测试先行(test first)方法,测试驱动开发(TDD)和行为驱动开发(BDD)的基础. \\ \ ...
- java 静态方法重写_Java 类中可以覆盖静态方法吗?
Java技术栈 www.javastack.cn 打开网站看更多优质文章 Java 类中可以覆盖静态方法吗? 不,你不能在Java中覆盖静态方法,但在子类中声明一个完全相同的方法不是编译时错误,这称为 ...
- Kotlin中的Java静态方法等效于什么?
本文翻译自:What is the equivalent of Java static methods in Kotlin? There is no static keyword in Kotlin. ...
- Java 类中可以覆盖静态方法吗?
Java 类中可以覆盖静态方法吗? 不,你不能在Java中覆盖静态方法,但在子类中声明一个完全相同的方法不是编译时错误,这称为隐藏在Java中的方法. 你不能覆盖Java中的静态方法,因为方法覆盖基于 ...
- Python中的测试工具
当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问题会显得很繁琐.在Python中,我们可以借助一些标准模块来帮助我们自动完成测试过程 ...
- python代码测试工具模块_详解Python中的测试工具
当我们在写程序的时候,我们需要通过测试来验证程序是否出错或者存在问题,但是,编写大量的测试来确保程序的每个细节都没问题会显得很繁琐.在Python中,我们可以借助一些标准模块来帮助我们自动完成测试过程 ...
- Spring Boot中的测试
文章目录 简介 添加maven依赖 Repository测试 Service测试 测试Controller @SpringBootTest的集成测试 Spring Boot中的测试 简介 本篇文章我们 ...
最新文章
- cuDNN 功能模块解析
- 实现对学生信息的增加操作
- 法国时隔20年再折桂!“网易云信:世界杯巅峰决战之夜”活动圆满结束!
- MQ问题集(kafka主从同步与高可用,MQ重复消费、幂等)
- The driver is automatically registered via the SPI and manual loading of the
- json mysql php_PHP MySQL连接表作为JSON
- 未定义jm matlab,math – 使用Jm 1 = 2mj(m)-j(m-1)公式在MATLAB中计算bessel函数
- 在微信源代码共享仿乐趣, 把你的业务微信
- 前端开发工程师面试题
- Win7Office2010Flash控件无法使用“此演示文稿中一些控件无法激活,可能这些控件未在此计算机中注册“
- SQL Express
- css中的单位换算_GitHub - WangQiangrong/cssUnitTransform: css单位转换工具
- 通过Adobe Scout深入理解Flash播放器
- 【Python】使用Selenium实现淘宝抢单
- 主成分回归之后预测_回归分析之主成分回归
- 五个方向告诉你如何运营好一个公众号!
- Matlab——图形绘制——三维立体图形 剔透玲珑球 动态图——彗星状轨迹图
- Stream Collectors - joining
- 【刷机】LG G2 能进入recovery但是不能进入新系统,can't open file ,G2刷TOT
- 【C++】最近公共祖先 LCA