如何使用Mock?
  .NET Mock Framework有哪些,可以看看下面几个网页:
  .NET Mocking Framework对比
  What C# mocking framework to use?
  The Fakes Framework in Visual Studio 2012
  关于Mock框架的实现方式,大概有两种:基于动态代理实现;基于编译时静态织入实现。各个框架的用法看一下介绍很快可以掌握了,关键是如何使用各种mock技术,存在的争论主要有下面几个:
  争论一:像Typemock、Moles、Visual Studio 2012 Fakes Framework这类静态织入技术的框架,可以支持对Sealed Class、Non-Abstract Method、Non-Virtual Method、Static Method的Mock。有些人觉得这很强大,有些人觉得这反倒不好,他们认为像Moq、Rhino Mocks这类的框架,正因为不支持前面说的四类情况的mock,强迫项目必须实现依赖倒置,从而降低了项目的耦合性,以达到较高的可测试性以及可维护性。
  争论二:在使用动态代理方式的Mock框架时候,为了“可测试性”,protected方法必须是virtual的,因为我们需要在子类中进行override。同理,Mock框架能够辅助的方法也必须是virtual的,即使是一个public方法。那么,您觉得这是为了可测试性而做出的让步吗?或者换句话说,您觉得,一个不可以override的protected方法,但是会影响到其他公开接口的功能,这是不是一个合理的设计呢?如果这是一个合理的设计,又不想作出这样的让步……我们又该怎么做呢?(这段话摘自老赵的“与protected成员有关的单元测试方式”)
  争论三:在使用动态代理方式的Mock框架时候,为了测试一些Non-Abstract Method、Non-Virtual Method、Static Method,提供一个被测方法/类的Wrapper,封装对无法直接访问方法的调用,是否合适?做法参考:
  http://blog.zhaojie.me/2009/08/unit-test-protected-method.html#comment_iX2whQ8q04I003i2
  http://blog.zhaojie.me/2009/08/unit-test-protected-method.html#comment_iX2whQ8q04I003hi
  关于争论一,我的考虑的结果如下:
  实际情况中,我会根据项目实际情况来选型。考虑的因素主要有:
  是否需要支持私有方法、Non-virtual方法的单元测试:实际情况中,项目的代码结构不一定是想象中的理想情况,这个时候需要考虑Typemock、Visual Studio 2012 Fakes这类框架。
  开发效率:能够花小的成本完成单元测试工作,获得大的收益。使用复杂,开发效率低的框架的优先级自然要排在后面。
  集成难易程度:一般单元测试用例会在提交代码的时候跑一遍,作为保证提交代码质量的一道关卡。单元测试框架是否能和现有持续集成工具很好的集成在一块,也是要考虑的因素。
  运行效率:跑的越快的框架,能够减少每次验证的时间成本。
  什么是“测试驱动数据库开发”?
  测试驱动数据库开发,也称为TDDD(Test-Driven Database Development),是把TDD的理念运用到数据库开发的过程中,通过数据库测试来定义数据库的行为,如同通过测试定义应用程序代码逻辑一样,来保证数据库重构过程中的质量。
  使用 TDDD 的优点包括:
  首先,所有TDD的优点都适用与TDDD ,你可以小步而安全的前进;
  通过重构使系统在整个生命周期中保持高质量的设计;
  回归测试让你能尽早发现缺陷;
  TDDD促使你能时刻获得一个新的可执行的系统(而不像传统的设计文档)。
  推荐感兴趣的朋友看看伍斌老师翻译《测试驱动数据库开发——Test-Driven Database Development: Unlocking Agility》这本书:
  目录结构:http://my.safaribooksonline.com/book/databases/database-design/9780132776486
  伍斌老师的译者序:让数据库应用开发不再裸奔——Test-Driven Database Development译者序
  样章试读:http://ptgmedia.pearsoncmg.com/images/9780321784124/samplepages/032178412X.pdf
  原作者Max Guernsey的PPT:http://www.maxthe3rd.com/test-driven-database-development/TDD-Database.pdf
  如何做测试驱动数据库开发?
  由于这块研究不深,暂时列举一些数据库单元测试框架,未来如果研究更加深入了,再专门写文章介绍。
  数据库单元测试的框架:
  DbFit
  tSQLt(Test Driven Database Development with tSQLt)
  DbUnit