Mock测试框架
一、前言
使用Mock框架进行单元测试,能够使用当前系统已经开发的接口方法模拟数据。(未写完,慢慢完善)
二、例子
1.引用Moq
2.定义一个接口和方法作为测试
public interface IAnimal { //创造动物,返回是否创造成功 bool CreateAnimal(string name); //方法参数中有输出参数 bool AnimalDance(string name, out string msg); string Eat(string food); int GetCount(); int FindEven(int even); int FindRange(int num); string FindRegex(string str); string Name { get; set; } }
3.Test
static void Main(string[] args) { Console.WriteLine("------------------------------------------------------------------------"); //1.根据接口创建mock var mock = new Mock<IAnimal>(); //2.配置将要模拟的方法,调用方法传入参数,当传入熊猫的时候返回true,其他参数则返回fale mock.Setup(a => a.CreateAnimal("熊猫")).Returns(true); ; //3.调用mock配置好的方法 Console.WriteLine(mock.Object.CreateAnimal("熊猫")); //true Console.WriteLine(mock.Object.CreateAnimal("大熊猫"));//false Console.WriteLine("------------------------------------------------------------------------"); string msg = "跳舞"; //配置将要模拟的方法,调用方法传入参数(也传入输出参数),当传入孔雀的时候返回true,其他参数则返回fale mock.Setup(a => a.AnimalDance("孔雀", out msg)).Returns(true); string outmsg = ""; Console.WriteLine(mock.Object.AnimalDance("孔雀", out outmsg)); //true,输出参数为跳舞 Console.WriteLine(outmsg); Console.WriteLine(mock.Object.AnimalDance("大孔雀", out outmsg));//false,输出参数为跳舞 Console.WriteLine(outmsg); Console.WriteLine("------------------------------------------------------------------------"); //配置调用方法的时候参数为白菜的时候抛出异常 mock.Setup(a => a.Eat("白菜")).Throws(new ArgumentException("错了")); Console.WriteLine(mock.Object.Eat("青菜")); //Console.WriteLine(mock.Object.Eat("白菜")); //抛出异常 Console.WriteLine("------------------------------------------------------------------------"); //在每一次调用返回不同的值,callback() ; mock.Setup(a => a.GetCount()).Returns(() => count).Callback(() => count++); Console.WriteLine(mock.Object.GetCount()); Console.WriteLine(mock.Object.GetCount()); Console.WriteLine(mock.Object.GetCount()); Console.WriteLine(mock.Object.GetCount()); Console.WriteLine("------------------------------------------------------------------------"); //无论输入什么字符串,都是输出食物两个字 It.IsAny<string>() mock.Setup(a => a.Eat(It.IsAny<string>())).Returns((string s) => "食物"); Console.WriteLine(mock.Object.Eat("面包")); Console.WriteLine("------------------------------------------------------------------------"); //输入的数字是偶数,则返回该数字本身,否则为默认值0 It.Is<int> mock.Setup(a => a.FindEven(It.Is< == ))).Returns((int b) => b); ; i < ; i++) { Console.WriteLine(mock.Object.FindEven(i)); } Console.WriteLine("------------------------------------------------------------------------"); //匹配范围的值 It.IsAny<string>() mock.Setup(a => a.FindRange(It.IsInRange<, , Range.Inclusive))).Returns((int b) => b); ; i < ; i++) { Console.WriteLine(mock.Object.FindRange(i)); } Console.WriteLine("------------------------------------------------------------------------"); //匹配正则表达式 It.IsAny<string>() mock.Setup(a => a.FindRegex(It.IsRegex("[4-7]"))).Returns((string b) => b); Console.WriteLine(mock.Object.FindRegex(")); Console.WriteLine(mock.Object.FindRegex(")); //只有5符合,只输出5 Console.WriteLine(mock.Object.FindRegex(")); Console.WriteLine("------------------------------------------------------------------------"); //属性 mock.Setup(s => s.Name).Returns("属性哦"); Console.WriteLine(mock.Object.Name); Console.ReadKey(); }
Mock测试框架的更多相关文章
- mock测试框架Mockito
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- java的mock测试框架
无论是敏捷开发.持续交付,还是测试驱动开发(TDD)都把单元测试作为实现的基石.随着这些先进的编程开发模式日益深入人心,单元测试如今显得越来越重要了.在敏捷开发.持续交付中要求单元测试一定要快(不能访 ...
- Mock测试框架(Mockito为例)
在做单元测试的时候,有的时候用到的一些类,我们构造起来不是那么容易,比如HttpRequest,或者说某个Service依赖到了某个Dao,想构造service还得先构造dao,这些外部对象构造起来比 ...
- 前端测试框架Jest系列教程 -- Mock Functions
写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
- 前端测试框架Jest系列教程 -- Mock Functions(模拟器)
写在前面: 在写单元测试的时候有一个最重要的步骤就是Mock,我们通常会根据接口来Mock接口的实现,比如你要测试某个class中的某个方法,而这个方法又依赖了外部的一些接口的实现,从单元测试的角度来 ...
- 【IDEA】单元测试:项目中引入JUnit测试框架+Mock简单了解
一.Junit 使用和说明: 参考:单元测试第三弹--使用JUnit进行单元测试-HollisChuang's Blog http://www.hollischuang.com/archives/17 ...
- Python3-unittest测试框架之Mock接口联调
unittest测试框架之Mock接口联调 unittest.mock 是一个用于测试的Python库.它允许使用mock对象替换受测试系统的部分,并对它们如何已经被使用进行断言. Mock使用前提 ...
- Python几种常用的测试框架
一.测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过 ...
- Android开源测试框架学习
近期因工作需要,分析了一些Android的测试框架,在这也分享下整理完的资料. Android测试大致分三大块: 代码层测试 用户操作模拟,功能测试 安装部署及稳定性测试 代码层测试 对于一般java ...
随机推荐
- iOS开发-清理缓存功能的实现
移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage. 但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯.购物.阅读类 ...
- createjs基础
<canvas id="gameView" width="400px" height="400px" style="back ...
- Windows下Mysql解压缩版配置安装与卸载
安装: ①解压Mysql到合适的位置! ②以管理员身份运行命令提示符(cmd),cd C:\Documents and Settings\Administrator\桌面\mysql-5.6.24-w ...
- Strange Grid
def main(): r,c = map(int, raw_input().split(' ')) if r % 2 != 0: base = 5*(r-1) else: base = 5*(r-2 ...
- libusb-win32 在visual studio2008中成功编译回忆录
关于这个项目不用多说 介绍 libusb是一个针对usb通讯的库. 使用它, 你不需要知道操作系统的细节, 你只需要对USB有足够的了解即可. 它也不需要你写驱动, 所有的工作都可以在用户态完成. 使 ...
- WiEngine+Eclipse+CDT+Sequoyah实现c++编程智能感知提示
经过一段时间的摸索,我初步肯定自己基于WiEngine平台和C++开发跨Android/iPhone游戏的最佳(至少目前)环境为: Eclipse+CDT+Sequoyah 第一,JAVA代码调试技术 ...
- hdu 3853 LOOPS(概率 dp 期望)
Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help ...
- QString转换为char*
QString在Qt里相当于C++里的std::string,或者是C里的c style string.不过,QString跟编码相关,在低层想把一个QString发送出去相当麻烦,尤其对方用的不是Q ...
- 数据库中简单的增删改查(CRUD)
一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Or ...
- 精通CSS+DIV基础总结(二)
上一篇我们已经总结了部分CSS+DIV相关知识,这篇我们接着总结,从下边几个方面学习一下: 一,我们看如何设置网页的背景,顾名思义背景可以通过颜色和图片来设置,下边我们看一下如何设置: 颜色的设置非常 ...