TDD: 测试静态方法
对于静态方法,mock框架大多不支持测试。所以需要修改代码,以便调用的静态方法可测试。
1 一个静态方法类:
public class MyHelper
{
public static string GetHelp()
{
return "This is help";
}
}
2 使用该静态方法的调用类,
public class MyManager
{
public bool IsManaged { get; set; }
public void Manage()
{
string help = MyHelper.GetHelp();
IsManaged = (!string.IsNullOrEmpty(help));
}
}
3 修改2的代码,模拟2中粗体代码部分
public class MyManager
{
public bool IsManaged { get; set; }
public void Manage()
{
string help = GetHelp();
IsManaged = (!string.IsNullOrEmpty(help));
} protected virtual string GetHelp()
{
return MyHelper.GetHelp();
}
}
4 在测试框架代码中创建一个Stu类,来模拟
public class MyManagerStub:MyManager
{
protected override string GetHelp()
{
return "this is help from stub";
}
}
5 现在可以通过测试Stu类来间接测试实际的代码了
public void TestMe()
{
MyManagerStub manager = new MyManagerStub();
manager.Manage();
Assert.AreEqual(true, manager.IsManaged);
}
TDD: 测试静态方法的更多相关文章
- TDD测试驱动开发
		TDD测试驱动开发 一.概念 TDD故名思意就是用测试的方法驱动开发,简单说就是先写测试代码,再写开发代码.传统的方式是先写代码,再测试,它的开发方式与之正好相反. TDD是极限编程的一个最重要的设计 ... 
- 我看TDD测试驱动开发
		今天在实验室给大家介绍了一下TDD和Docker,大家对TDD都比较感兴趣,包括老板,也问了一些问题. 还是从头来说TDD吧,TDD作为敏捷开发领域的领头军,充满魅力,同时也充满争议.一切从三大军规说 ... 
- testem方便的web tdd  测试框架使用
		备注: 单元测试,对于日常的开发是比较重要的,testem 简化了我们的代码编写,以及运行. 主要特性: a. 支持的测试框架有:jasmine quint mocha buster ... 
- TDD测试驱动的javascript开发(3) ------ javascript的继承
		说起面向对象,人们就会想到继承,常见的继承分为2种:接口继承和实现继承.接口继承只继承方法签名,实现继承则继承实际的方法. 由于函数没有签名,在ECMAScript中无法实现接口继承,只支持实现继承. ... 
- TDD在Unity3D游戏项目开发中的实践
		0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ... 
- TDD学习笔记【一】----序言
		提到TDD大多数程序员的疑问: 为什么我要写两份程序? 为什么我要写程序来验证我已经知道的结果? 我又不是SA,可能也不懂domain,怎么产生一开始的test case? 最后的感想就变成是: 1. ... 
- .NET 里 静态方法的并发处理
		静态方法在程序运行时 就已经实例化好了 不管多少用户并发 都一样处理,不需要排队等待,实例代码: namespace DotNet.Example { using DotNet.BaseManager ... 
- 测试驱动开发 TDD
		一.详解TDD 1.1.TDD概念 :Test Drived Develop 测试驱动开发是敏捷开发中的一项核心实践和技术,也是一种方法论.TDD的原理是在开发功能代码之前,编写单元测试用例代码,测试 ... 
- Practical Node.js (2018版) 第3章:测试/Mocha.js, Chai.js, Expect.js
		TDD and BDD for Node.js with Mocha TDD测试驱动开发.自动测试代码. BDD: behavior-driven development行为驱动开发,基于TDD.一种 ... 
随机推荐
- laravel框架的rabbitmq使用示例[多队列封装]
			RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的.所有主要 ... 
- 8086实时时钟实验(一)——《x86汇编语言:从实模式到保护模式》05
			1.代码清单 ;代码清单9-1 ;文件名:c09_1.asm ;文件说明:用户程序 ;创建日期:2011-4-16 22:03 ;=================================== ... 
- 简单的Extjs中的Combox选择下拉框使用
			{ xtype: "combobox", editable: false, emptyText: "--请选择--", mode: 'local', store ... 
- flask-SQLAlchemy的ORM
			1.创建表 import datetime from sqlalchemy import create_engine from sqlalchemy.ext.declarative import de ... 
- javascript 实现函数/方法重载效果
			什么是重载? 在C#和JAVA等编程语言中函数重载是指在一个类中可以定义多个方法名相同但是方法参数和顺序不同的方法,以此来实现不同的功能和操作,这就是重载. JS没有重载,只能模拟重载 一般来说,如果 ... 
- 01常用<meta>总结
			meta标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的,它可以用于浏览器(显示内容/重新加载页面),搜索引擎(关键字),或者其他web服务. 一.页面设置 <!- ... 
- 【代码笔记】XML深入学习:DTD约束与DTD语法(1)
			2015-12-27 文件名 student.xml <?xml version="1.0" encoding="GB2312" standalon ... 
- SQL Server 与 ADO.NET 数据类型映射
			SQL Server 数据类型映射 .NET Framework 4.5 SQL Server 和 .NET Framework 基于不同的类型系统. 例如,.NET Framework Decima ... 
- 3D开源推荐:全球卫星地图 Esri-Satellite-Map
			演示网址:http://richiecarmichael.github.io/sat/index.html 开源网址:https://github.com/richiecarmichael/Esri- ... 
- 【嵌入式】安装Linux系统到开发板
			一.开发板基本介绍 Flash --相当于硬盘 RAM -- 内存 Micro USB或232串口 连电脑 USB 接口连摄像头 启动方式 选择开关 :SD卡启动或NAND FLASH 启动 USB转 ... 
