C# Fakes】的更多相关文章

如题,本文主要作为在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 —— 我对接口进行单元…
为了在单元测试中指定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…
在单元测试(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…
接上一篇使用Microsoft Fakes进行单元测试(1) 下面进行Shim的演示. 2.使用Shim替换静态方法 假设我们需要一个工具方法用来格式化当前时间为字符串,因为DateTime.Now一直在变的所以我们需要隔离它,且DateTime是.NET内置的类型,所以我们根本不可能去修改它,但是有了MS Fakes一样可以隔离起来. 工具类: 简单的格式化一下然后返回. 在Tests项目下为System引用添加Fakes程序集 使用Shim来完成测试: 运行测试: Ctrl+T+R 可以看到…
一:什么是单元测试 单元测试是对软件进行准确性验证的步骤.单元测试并不进行整个软件功能的测试,仅仅是对于最小工作单元的测试.一般最小工作单元就是指方法/函数等. 这里并不打算对单元测试的概念及基础进行更多的介绍,需要了解更多的自行google. 二:UnitTestFramework UnitTestFramework是微软开发的一套单元测试框架.类似的三方框架有NUnit等.UnitTestFramework为单元测试提供断言,自动化测试,管理界面等功能.与VisualStudio无缝集成.…
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 在编写单元测试时,我们会遇到不同的外部依赖项,大体上可以分为两类: 依赖于接口或抽象类 依赖于具体类 我们将使用 Microsoft Fakes 分别对两种条件下的依赖项进行隔离. 依赖于接口或抽象类 首先,我们来定义被测试代码. public interface IEmailSender { bool SendEmail(string content); } public class Custo…
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,填充类型,解决了…
使用Microsoft Fakes进行单元测试(1)   一:什么是单元测试 单元测试是对软件进行准确性验证的步骤.单元测试并不进行整个软件功能的测试,仅仅是对于最小工作单元的测试.一般最小工作单元就是指方法/函数等. 这里并不打算对单元测试的概念及基础进行更多的介绍,需要了解更多的自行google. 二:UnitTestFramework UnitTestFramework是微软开发的一套单元测试框架.类似的三方框架有NUnit等.UnitTestFramework为单元测试提供断言,自动化测…
一.前言 最近团队要尝试TDD(测试驱动开发)的实践,很多人习惯了先代码后测试的流程,对于TDD总心存恐惧,认为没有代码的情况下写测试代码时被架空了,没法写下来,其实,根据个人实践经验,TDD并不可怕,还很可爱,只要你真正去实践了几十个测试用例之后,你会爱上这种形式方式的.微软对于TDD的开发方式是大力支持和推荐的,新发布的VS2012的团队模板就是根据.新的Visual Studio 2012给我们带来了Fakes框架,这是一个针对代码测试时对测试的外界依赖(如数据库,文件等)进行模拟的Moc…
https://dev.to/milipski/test-doubles---fakes-mocks-and-stubs This text was originally posted at Pragmatists blog In automated testing it is common to use objects that look and behave like their production equivalents, but are actually simplified. Thi…
Fakes自动生成的Shim代码,有两种可能:(目前尚不清楚生成规律) //属性型 public static FakesDelegates.Func<string, bool, string> ConvertToFirstPinYinStringBoolean { set; } //方法型 public static void GetTokenFromTicketOf1String<TEntity>(FakesDelegates.Func<string, TEntity&g…
Moq是无法直接模拟静态方法的,解决方式有两种: 1.需要修改正式代码,在源代码中建一个新的方法把静态方法包起来,调用的时候源代码调用时调用新方法而不是原来的静态方法. 在测试的时候,Mock掉这个新的方法,以达到模拟的目的 原来: public class FormatClass { public static string FormatDate(DateTime date) { return date.ToString("yyyyMMdd"); } } public class D…
我们为了测试程序的运行逻辑,需要写单元测试来验证程序的逻辑.有的时候我们的逻辑需要依赖于外界的事物(需要一个文件,eg:数据库),我们不可能在运行单元测试的计算机都创建一个数据库,所以这个时候我们就需要Fakes. eg:现在,假设我们需要为NeedTestMethod写单元测试,而NeedTestMethod依赖于一个获取md5的方法,需要实际的文件,这个时候就要用到fakes了. 首先,右击NeedTestMethod的程序集"添加Fakes程序集",使用Shim方法(还有模仿接口…
这是一篇导航文,不是翻译. MSDN对stub和shim的解释和使用场景演示:http://msdn.microsoft.com/en-us/library/hh549175.aspx 一个更详细的示例:http://www.richonsoftware.com/post/2012/04/05/Using-Stubs-and-Shim-to-Test-with-Microsoft-Fakes-in-Visual-Studio-11.aspx 我感兴趣的是如何对mvc项目进行测试:http://w…
stub常用于虚拟接口.类.方法,无法重写静态方法(stub需要传递到具体调用代码中) shim常用于重写静态方法(在ShimsContext.Create()作用域内,拦截Runtime动态修改方法的实现,静态方法无需传递) shim如果用于重写非静态方法,依然需要传递 以下两种的目的都是虚拟TokenHandler.GetToken这个方法 stub: var stubTokenHandler = new StubTokenHandler<Token>("user")…
返回<.Net中的AOP>系列学习总目录 本篇目录 AOP是什么? Hello,World! 小结 本系列的源码本人已托管于Coding上:点击查看,想要注册Coding的可以点击该连接注册. 本系列的实验环境:VS 2013 Update 5(建议最好使用集成了Nuget的VS版本,VS Express版也够用). 这篇博客覆盖的内容包括: AOP简史 AOP解决什么问题 使用PostSharp编写一个简单的切面 AOP是什么? AOP在计算机科学领域还是相对年轻的概念,由Xerox PAR…
标题有点标题党,但相信各位看完这篇文章一定会所收获,如果之前没有接触过单元测试或了解不深通过本文都能对单元测试有个全新认识.本文的特点是不脱离实际,所测试的代码都是常见的模式. 写完这篇文章后,我看了一些关于单元测试理论的东西,发现文章中有些好像不太合主流测试理论,由于理论和使用个人难以完美结合,只能取实用为本. 另外本文编写的单元测试都是基于已有代码进行测试,而不是TDD倡导的现有测试后有可以工作的代码,不同思想指导下写出的测试代码可能不太一样. 最近的项目中写了一个巨长的函数,调试的时候总是…
GitHub实战系列汇总:http://www.cnblogs.com/dunitian/p/5038719.html —————————————————————————————————————————————————————— 很多人问,明明有git gui 和 github可以直接图形化操作的吗?全部指令干啥??? 呃(⊙o⊙)…呃(⊙o⊙)… ===> 装逼~ O(∩_∩)O~,开玩笑的,其实就是为了通用和熟悉git,linux里面照样这样用,多熟悉点基础指令很有用的, 如果觉得顿时不开心…
一.[前言] (1)本文将用到IOC框架Unity,可参照<Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备>(2)本文的解决方案是基于前述<使用IdleTest进行TDD单元测试驱动开发演练(1)>.<使用IdleTest进行TDD单元测试驱动开发演练(2)>继续编 写的,但是已经将解决方案.项目名称等等改名为了“IdleTest.EFAndMVCDemo”.(3)本文将不再一步一步的记录,只写出重要的步骤并贴出一些关键代码,完整代码…
[前言] 1. 有关上篇请参见<使用IdleTest进行TDD单元测试驱动开发演练(1)>,有关本篇用到Entity Framework Code First请参见<使用NuGet助您玩转代码生成数据————Entity Framework 之 Code First>,而用的个人类库参照IdleTest.2. 本文只用了简单的Entity Framework演练单元测试,着重于Testing,而不是实现,并不会涉及事务.效率等问题. 3. 回顾上一篇里面讲到的是针对业务层的测试,正…
[前言] 开发工具:Visual Studio 2012 测试库:Visual Studio 2012自带的MSTest DI框架:Unity 数据持久层:Entity Framework 前端UI:ASP.NET MVC 4.0 需求:我这里假设只满足两个功能,一个用户注册,另一个则是登陆的功能,借助于一些DDD思想,我将从领域层(或者常说的BLL)开始开发,当然每一层都是采用TDD,按我喜欢的做法就是“接口先行,测试驱动”,不废话,直奔主题吧. 有关VS2012的单元测试请参见<VS2012…
首先,给出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,具体可参…
[1]我的IdleTest源码地址:http://idletest.codeplex.com/ [2]IdleTest改动说明:2013年10月份在保持原有功能的情况下对其动了较大的手术,首先将基本的断言方法分离成为接口,以便于扩展,例如现在可以支持切换测试框架(实现IAssertInstance接口,并修改AssertCommon_Editable.cs中的DEFAULT_INSTANCE为新的对象),然后就是增加对xml一些操作的支持.尽管如此,但并不是完全遵循OCP,可以说对扩展开放,对修…
就在昨天终于做了gtest的分享,我的预研工作终于结束了,感觉离我辞职的日子不远了,毕竟是专注java二百年啊,要告别实习啦.. 这篇是GoogleMock的简介文档,会在后边附带一个自己的例子. 一.什么是Google C ++ Mocking Framework? 当你写一个原型或测试,往往不能完全的依赖真实对象.一个mock对象实现与一个真实对象相同的接口,但让你在运行时指定它时,如何使用?它应该做什么?(哪些方法将被称为?什么顺序?多少次?有什么参数?他们会返回什么?等) 注意:很容易混…
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…
文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解决方案. 根据博客园管理员的建议,已移至博客园招聘频道,有感兴趣的朋友可以和我直接联系! 一. 背景 2014年6月30日离开微软新加坡,第二天随即加入现在的公司,之后一直忙碌着公司的新项目,权限系统.以及旧项目的维护与重构,整体来说一起都比较顺利,每天都忙碌.痛苦并快乐着. 由于前面几个系统的顺利…
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依赖注入.ORM.对象映射.日志.缓存等等功能,都只定义了一套最基础最通用的抽象封装,提供了一套统一的API.约定与规则,并定义了部分执行流程,主要是让项目在一定的规范下进行开发.所有的功能实现端,都是通过现有的成熟的第三方组件来实现的,除了EntityFramework之外,所有的第三方实现都可以轻…
Reading data from a generator using yield from def reader(): """A generator that fakes a read from a file, socket, etc.""" for i in range(4): yield '<< %s' % i def reader_wrapper(g): # Manually iterate over data produce…
具体参考:http://www.jianshu.com/p/6e2b68a93c88 一,简单粗暴型:禁用缩放 <meta name="viewport" content="user-scalable=no"> <meta name="viewport" content="initial-scale=1,maximum-scale=1"> 二,更改默认视口宽度: <meta name="…
Prevent and troubleshoot runtime issues Troubleshooting performance, security and errors using performance wizard (Vs2012) Using VS profiler (Analyzer | Profiler) Using Performance Monitor NLog/log4net for logging Tracing, Trace.WriteLine("Message&qu…