使用 Microsoft Fakes 进行单元测试】的更多相关文章

接上一篇使用Microsoft Fakes进行单元测试(1) 下面进行Shim的演示. 2.使用Shim替换静态方法 假设我们需要一个工具方法用来格式化当前时间为字符串,因为DateTime.Now一直在变的所以我们需要隔离它,且DateTime是.NET内置的类型,所以我们根本不可能去修改它,但是有了MS Fakes一样可以隔离起来. 工具类: 简单的格式化一下然后返回. 在Tests项目下为System引用添加Fakes程序集 使用Shim来完成测试: 运行测试: Ctrl+T+R 可以看到…
使用Microsoft Fakes进行单元测试(1)   一:什么是单元测试 单元测试是对软件进行准确性验证的步骤.单元测试并不进行整个软件功能的测试,仅仅是对于最小工作单元的测试.一般最小工作单元就是指方法/函数等. 这里并不打算对单元测试的概念及基础进行更多的介绍,需要了解更多的自行google. 二:UnitTestFramework UnitTestFramework是微软开发的一套单元测试框架.类似的三方框架有NUnit等.UnitTestFramework为单元测试提供断言,自动化测…
一:什么是单元测试 单元测试是对软件进行准确性验证的步骤.单元测试并不进行整个软件功能的测试,仅仅是对于最小工作单元的测试.一般最小工作单元就是指方法/函数等. 这里并不打算对单元测试的概念及基础进行更多的介绍,需要了解更多的自行google. 二:UnitTestFramework UnitTestFramework是微软开发的一套单元测试框架.类似的三方框架有NUnit等.UnitTestFramework为单元测试提供断言,自动化测试,管理界面等功能.与VisualStudio无缝集成.…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 在编写单元测试时,我们会遇到不同的外部依赖项,大体上可以分为两类: 依赖于接口或抽象类 依赖于具体类 我们将使用 Microsoft Fakes 分别对两种条件下的依赖项进行隔离. 依赖于接口或抽象类 首先,我们来定义被测试代码. public interface IEmailSender { bool SendEmail(string content); } public class Custo…
如题,本文主要作为在VS2012使用Fakes的入门示例,开发工具必须是VS2012或更高版本. 关于Fakes的MSDN地址:http://msdn.microsoft.com/en-us/library/hh549175.aspx 关于VS2012单元测试的前期文章: 1.<在Visual Studio 2012使用单元测试>. 2.<VS2012 单元测试之泛型类(Generics Unit Test)>. 3.<VS2012 Unit Test —— 我对接口进行单元…
在单元测试(Unit Test)中我们遇到的问题之一是:假如被测试组件(类或项目)为A,组件A依赖于组件B,那么在组件A的单元测试ATest中测试A时,也需要依赖于B,在B发生改动后,就可能影响到A的测试结果.为了在测试A时隔离B对A的影响,这就是Microsoft Fakes要解决的问题. 解决上面的问题,Microsoft Fakes采用的方法是用将组件B用stubs或shims替换. 参看:http://msdn.microsoft.com/library/vstudio/hh549175…
http://baike.baidu.com/view/9602275.htm?fr=aladdin http://technet.microsoft.com/zh-cn/magazine/hh549175.aspx Microsoft Fakes 提供了两种模拟类型成员的方式.以下两种方式的替代实现,都可以由委托来重新实现. 1.Stub Type,存根类型,可以动态地为接口及非密封的virtual或属性附加委托,以重新定义其实现,生成的类为强类型. 2.Shim Types,填充类型,解决了…
标题有点标题党,但相信各位看完这篇文章一定会所收获,如果之前没有接触过单元测试或了解不深通过本文都能对单元测试有个全新认识.本文的特点是不脱离实际,所测试的代码都是常见的模式. 写完这篇文章后,我看了一些关于单元测试理论的东西,发现文章中有些好像不太合主流测试理论,由于理论和使用个人难以完美结合,只能取实用为本. 另外本文编写的单元测试都是基于已有代码进行测试,而不是TDD倡导的现有测试后有可以工作的代码,不同思想指导下写出的测试代码可能不太一样. 最近的项目中写了一个巨长的函数,调试的时候总是…
[前言] 开发工具:Visual Studio 2012 测试库:Visual Studio 2012自带的MSTest DI框架:Unity 数据持久层:Entity Framework 前端UI:ASP.NET MVC 4.0 需求:我这里假设只满足两个功能,一个用户注册,另一个则是登陆的功能,借助于一些DDD思想,我将从领域层(或者常说的BLL)开始开发,当然每一层都是采用TDD,按我喜欢的做法就是“接口先行,测试驱动”,不废话,直奔主题吧. 有关VS2012的单元测试请参见<VS2012…
为了在单元测试中指定DateTime.Now的值,我采用Microsoft Fakes技术的Shim. 主要参考了园里的http://www.cnblogs.com/FreeDong/p/3353111.html,编译时出了几千个警告,最终在“引用”中没有出现System.4.0.0.0.Fakes,当然了,这种情况下写using System.Fakes也编译出错.我的环境是VS2013 update4.中间经历了各种折腾,直到用VS2012 update2试了,奇迹地成功了. 最后打了VS2…
一个优秀的单元测试 Mocking 类库,需要具备如下几个特性: 易用性:有非常明确的 API ,易于使用并易于记忆. 健壮性:行为结果始终一致,并保持准确. 帮助性:当程序出错时,给出尽可能明确的原因提示. 如果我们所使用的类库没有满足上述条件,编写测试用例的过程将变得复杂和困难,使用类库不仅没有节省时间,反而可能使我们更加迷惑.在这种条件下,我们可能更愿意删除测试用例,之前的工作也就浪费了. 在 .NET 世界中,下面是一些框架或类库的比较: 目前主流的 Mocking 类库都会支持以下主要…
 Moles与Moq(Rhino.Mocks)比较 作用范围 Moq与Rhino.Mocks这类的Mock是对Interface或AbstractClass做Mock, 而Moles是Mock整个CLR(Common Language Runtime),破除Moq等Mock套件的限制,不仅可以对Interface或AbstractClass做Mock,还可以对Static Method来Mock,如DateTime.Now或File.Open等Static Method,使原本在开发时不用为…
.NET重构—单元测试重构 阅读目录: 1.开篇介绍 2.单元测试.测试用例代码重复问题(大量使用重复的Mock对象及测试数据) 2.1.单元测试的继承体系(利用超类来减少Mock对象的使用) 2.1.1.公用的MOCK对象: 2.1.2.公用的MOCK行为: 2.1.3.公用的MOCK数据: 3.LINQ表达式的重构写法(将必要的LINQ写成普通的Function穿插在LINQ表达式中) 4.面向特定领域的单元测试框架(一切原则即是领域驱动) 4.1.分散测试逻辑.日志记录(让测试逻辑可以重组…
一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕,还很可爱,只要你真正去实践了几十个测试用例之后,你会爱上这种形式方式的.微软对于TDD的开发方式是大力支持和推荐的,新发布的VS2012的团队模板就是根据.新的Visual Studio 2012给我们带来了Fakes框架,这是一个针对代码测试时对测试的外界依赖(如数据库,文件等)进行模拟的Moc…
1. VisualStuio中的测试资源管理器.CodeLens和ReSharper 上一篇文章重温了<单元测试的艺术>里提到的单元测试的技术及原则.这篇文章实践使用VisualStudio 2019进行单元测试. 在VisualStudio中通常都会使用"测试资源管理器"进行单元测试. Professional和Enterprise版本可以使用CodeLens,这大大方便了测试的运行与调试. 但CodeLens的图标常常刷不出来,一些第三方插件(如ReSharper)会更…
首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.aspx (类库) Verifying Code by Using Unit Tests (介绍) 我的IdleTest源码地址:http://idletest.codeplex.com/ VS2012单元测试的主要类:Assert.StringAssert.CollectionAssert,具体可参…
VS2012 Unit Test 个人学习汇总(含目录) 首先,给出MSDN相关地址:http://msdn.microsoft.com/en-us/library/Microsoft.VisualStudio.TestTools.UnitTesting.aspx (类库) Verifying Code by Using Unit Tests (介绍) 我的IdleTest源码地址:http://idletest.codeplex.com/ VS2012单元测试的主要类:Assert.Strin…
这篇文章简介一下,如何通过 mock framework,来辅助我们更便利地模拟目标对象的依赖对象,而不必手工敲堆只为了这次测试而存在的辅助类型. 而模拟目标对象的部分,常见的有 stub object, mock object, fake object,本文也会简单介绍一下三者的不同点,并且通过实例,帮助读者快速的 pick up 实战经验. 安装与范例说明 本文的范例,使用 VS2013 为开发工具,mock framework 则是使用 Rhino.Mocks,通过 IoC 的方式,由构造…
以下是技术牛人,灵感之源.在于15年7月23日归类的一个技术地图 主要包括10个大类.50个子类 http://jingyan.baidu.com/article/4ae03de344f9b33eff9e6bdd.html 1.WEB开发类: A.sharepoint(SharePoint Portal Server 2003 是一个门户站点,使得企业能够开发出智能的门户站点,这个站点能够无缝连接到用户.团队和知识.因此人们能够更好地利用业务流程中的相关信息,更有效地开展工作.) B.Silve…
作业1(截止时间3月22日) 请使用excel模板或word模板,完成对126邮箱登录功能的测试用例编写,界面如下图.提交到ftp. ------------------------------------------------------------------------------------ 作业2(截止时间3月29日) 请为三角形问题.NextDate函数.佣金问题,设计黑盒测试用例.要求首先说明采用的测试方法和设计思路(写出等价类或决策表),然后再编写测试数据. ---------…
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html —————————————————————————————————————————————————————— 很多人问,明明有git gui 和 github可以直接图形化操作的吗?全部指令干啥??? 呃(⊙o⊙)…呃(⊙o⊙)… ===> 装逼~ O(∩_∩)O~,开玩笑的,其实就是为了通用和熟悉git,linux里面照样这样用,多熟悉点基础指令很有用的, 如果觉得顿时不开心…
[1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的断言方法分离成为接口,以便于扩展,例如现在可以支持切换测试框架(实现IAssertInstance接口,并修改AssertCommon_Editable.cs中的DEFAULT_INSTANCE为新的对象),然后就是增加对xml一些操作的支持.尽管如此,但并不是完全遵循OCP,可以说对扩展开放,对修…
These are the contents of my training session about unit testing, and also have some introductions about how could we write better unit tests with NSubstitute framework. The related sessions: Unit Testing with NSubstitute Building the Testing Pipelin…
一直想了解一下git,正好最近的有一个问题就是,实验室写的代码,怎么同步到自己宿舍的笔记本上面来.最开始想用dropbox,但是用VS的人都知道,工程文件里面会给你生成乱七八糟的很多东西,很占空间,dropbox好像没有选择同步某个文件的功能,只能同步某个文件夹.以前看过git,但是好久没用,隔了一俩个月就忘了.这里把常用的概念.命令做个笔记. 资料大部分来源于这里 1.文件的三种状态:已提交(committed),已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地…
## Ignore Visual Studio temporary files, build results, and## files generated by popular Visual Studio add-ons. # User-specific files*.suo*.user*.userosscache*.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio)*.userprefs # Build result…
一.版本控制概要 Git 是一种在全球范围都广受欢迎的版本控制系统.在开发过程中,为了跟踪代码,文档,项目等信息中的变化,版本控制变得前所未有的重要.但跟踪变化远远不能满足现代软件开发行业的协同需求,基于 Git 的 Workflow 满足了合作编程的需求,让开发从此变得更加高效和有趣.相比集中式版本控制系统如 SVN ,分布式版本控制系统 Git 拥有更强大的分支管理与合并能力,支持离线开发,并良好地保留了提交过程,让您和您的团队在开发过程中如虎添翼. 1.1.什么是版本控制 版本控制(Rev…
不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了.所有配置文件可以直接在线浏览:https://github.com/github/gitignore 举个例子: 假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件: # Windows: Thumbs.db ehthumbs.db…
用户界面套包DevExpress v17.2日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了CodeRush v17.2 的新功能,快来下载试用新版本! Unit Test Runner JavaScript Test Runner JavaScript Test Runner已经过测试版,您现在可以使用功能强大的CodeRush Test Runner为客户端JavaScript代码运行&调试测试. 我们的JavaScript test runner基于Karma并支…
https://www.gitignore.io/ 这个网站可以搜索特定项目.系统所需要的.gitignore 我现在主要是在Mac上用Visual Studio Code进行开发,所以直接搜索MacOS和Visual Studio Code就可以,然后点Create按钮 以下就是创建出来的结果 # Created by https://www.gitignore.io/api/macos,visualstudiocode ### macOS ### *.DS_Store .AppleDoubl…
# Visual Studio # User-specific files *.suo *.user *.userosscache *.sln.docstates # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs # Build results [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ [Rr]eleases/ [Xx]/ [Xx]/ [Bb]uild/ bld/ [Bb]in/ [Oo…