五. 引入测试驱动开发

1,引入概念

由于本篇的依赖属性体系是基于测试驱动开发完成的,所以我们就先来看一下什么叫测试驱动开发:测试驱动开发的基本思想就是在开发功能代码之前, 先编写测试代码。也就是说在明确要开发某个功能后,首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后循 环进行添加其他功能,直到完全部功能的开发。由于过程很长,在写的时候也省略了不少步骤,所以有些地方衔接不是那么的流畅,对此表示非常的抱歉!

2,注意事项

根据自身做项目使用TDD的一点微薄经验,总结了以下几个注意事项:
◆ 找准切入点:
不论是开发一个新的系统还是复原系统,都必须先找准一个或多个切入点,从切入点经历”测试代码-功能代码-测试-重构“来逐渐完善整个系统,往往这个切入点就是功能点,就是这个系统具备哪些功能,然后根据这些功能写出测试用例。
◆ 测试列表:
大家都知道一个系统或者一个框架都是很庞大的,如果要引入测试驱动开发,首先我们必须要有一个测试列表,在任何阶段想添加功能需求问题时,把相 关功能点加到测试列表中,然后继续开发的工作。然后不断的完成对应的测试用例、功能代码、重构。这样可以避免疏漏的同时也能把控当前的进度。
◆ 测试驱动:
这个比较核心。完成某个功能,某个类,首先编写测试代码,考虑其如何使用、如何测试。然后在对其进行设计、编码。这里也强调先编写对功能代码的判断用的断言语句,然后编写相应的辅助语句。
◆ 良好的代码设计及可测性:
功能代码设计、开发时应该具有较强的可测试性。应该尽量保持良好的设计原则和代码规范,如尽量依赖于接口、尽量高内聚、低耦合等等。
◆ 模块或功能隔离:
不同代码的测试应该相互隔离。对一块代码的测试只考虑此代码的测试,不要考虑其实现细节,不然就会陷入一团乱麻之中,这个可以通过MOCK来实现,同时在开始的时候也要划分好边界。
◆ 适当引入MOCK:
在适当情况下引入MOCK来完成单元测试,这种情况尤其是在边际交互比较多的案例当中,对于交互比较多且复杂的多个类关系可以用MOCK暂时模拟,这是一个不错的解决方案。
◆ 由小到大、由偏到全、统筹兼顾:
一个产品或者一个项目是比较大的,所以我们这里就需要遵循由小到大、由偏到全、统筹兼顾的原则,分解功能和代码。把所有的规模大、复杂性高的工作,分解成小的任务来完成,这样既方便团队协作,同时也减轻了复杂度,使整个开发一下子变得简单了许多。
◆ 保持随时重构的习惯
很多开发者在经过测试代码-功能代码-测试通过以后就当完成了任务,其实你会发现随着其他功能的引入或者使用过程中发现了很多重复、冗余的代 码、再或者先前的代码结构和设计不太合理,这个时候就需要随时的进行重构和单元测试,在一方面可以避免产生风险,另一方面可以使系统更加完善。
◆ 随时进行回归:
在”测试代码-功能代码-测试-重构“的循环中一定要记住多回归,因为这样可以保证当前的代码是不是会影响到前面的功能,其实只需要看看红绿灯就行。
  查看和统计代码覆盖率
通过前面的步骤之后,我们就要看一下实现的功能是否达到我们的预期目标,除了功能完善之外,还要保证代码的覆盖率,因为它是一个系统稳定与否、可维护性与否的一个重大标志。

3,工具介入

以后写关于TDD的文章可能比较多,同时也都会用到这个工具,所以我们今天对它也稍带介绍一下,正所谓“工欲善其事,必先利其器”。根据官方文 档解释:TestDriven.NET是Visual Studio的一个TDD插件,最近版本是TestDriven.NET-3.0.2749 RTM版。其中一些新特性有:支持MSTest、.NET Reflector 6 Pro、VS 2010、Silverlight 4、NUnit 2.5.3,使用项目所用的.NET框架等。 下载地址: http://www.testdriven.net/  
这个工具使用
本文转自KnightsWarrior51CTO博客,原文链接:http://blog.51cto.com/knightswarrior/405230,如需转载请自行联系原作者

依赖属性之“风云再起”二相关推荐

  1. WPF基础到企业应用系列8——依赖属性之“风云再起”

    一. 摘要 首先圣殿骑士很高兴"WPF 基础到企业应用系列" 能得到大家的关注.支持和认可.看到很多朋友留言希望加快速度的问题,我会尽力的,对你们的热情关注也表示由衷的感谢.这段时 ...

  2. 依赖属性之“风云再起”五

    十二. 其他协助类测试代码 这里就简单写一下对DependencyObjectTypeTest的测试代码: 1: using System; 2: using System.Windows; 3: u ...

  3. 依赖属性之“风云再起”三

    八. DependencyObject测试代码 在写DependencyObject测试代码之前,我们先看一下它到底有哪些成员和方法,如下图: 通过上面的这幅图,我们知道它的主要功能包括:各种依赖属性 ...

  4. 依赖属性之“风云再起”四

    十. PropertyMetadata测试代码 前面我们看到一个依赖属性的注册最全的形式是下面这样子的: public static DependencyProperty Register(strin ...

  5. 【demo练习二】:WPF依赖属性的练习

    2016-10-11 依赖属性demo小样: 要求:在窗口中点击按钮,利用设置"依赖属性"把Label和TextBox控件里的属性值进行改变. ================== ...

  6. WPF依赖属性(二)

    转载自:http://www.cnblogs.com/chillsrc/p/4688983.html 六.依赖属性回调.验证及强制值 我们通过下面的这幅图,简单介绍一下WPF属性系统对依赖属性操作的基 ...

  7. 初步了解WPF依赖属性

    一 依赖属性 在WPF库实现中,依赖属性使用普通的C#属性进行了包装,使得我们可以通过和以前一样的方式来使用依赖属性.但必须明确,在WPF中我们大多数都在使用依赖属性,而不是使用属性.依赖属性重要性在 ...

  8. WPF之依赖属性和附加属性

     参考资料: 一站式WPF--依赖属性(DependencyProperty)一 一站式WPF--依赖属性(DependencyProperty)二         依赖属性之我见: 这两篇文章介绍的 ...

  9. WPF快速入门系列(2)——深入解析依赖属性

    一.引言 感觉最近都颓废了,好久没有学习写博文了,出于负罪感,今天强烈逼迫自己开始更新WPF系列.尽管最近看到一篇WPF技术是否老矣的文章,但是还是不能阻止我系统学习WPF.今天继续分享WPF中一个最 ...

最新文章

  1. html中如何实现放大动画,CSS3实现点击放大的动画实例
  2. python实现表格合并_Python实现合并excel表格的方法分析
  3. 系列(六)—Linux命令
  4. 2023年多播ABR市场将达8亿美元
  5. 使用google map实现周边搜索的功能_「转」“搜索”的原理,架构,实现,实践,面试不用再怕了...
  6. Mysql8.0秒级加字段
  7. 如何在windows下用dos进入mysql
  8. 图片和Base64编码相互转换
  9. PHP+HTML简单实现BBS论坛与回帖
  10. 校招入职微软的99天
  11. javascript键盘事件
  12. 宇宙中最恐怖的行星之索伦之眼—北落师门b
  13. 零信任体系下的企业数据安全建设路径
  14. 前端开发JS--匀速运动
  15. PacBio三代宏基因组测序大幅提升海洋水体宏基因组研究效果
  16. 更改技嘉主板开机画面
  17. Commit: Not all refs have been pushed.
  18. 如何将谷歌分析代码放入react项目中?
  19. vue3从入门到入院
  20. anaconda打不开解决办法

热门文章

  1. Java中更新新的数据,USEUPDATE
  2. 恒星物联 窨井液位监测系统解决方案 窨井监测
  3. 征集 | 9大战队4天时间,完成10余个创意项目,智领云HackWeek大赛一触即发!
  4. <Verilog实现除法器> Verilog实现不恢复余数(non-restoring)除法器
  5. CCF-CSP 201812-1 小明上学
  6. 全网最全Python netmiko库实现自动化备份网络设备配置、路由、cpu、内存、电源等
  7. KUBO编程人工智能启蒙跨学科项目展示研讨活动在宝山区小学试点展开
  8. 关于mysql-connector-net和C#.net
  9. 2022-2028年中国光存储行业发展战略规划及投资方向研究报告
  10. ArrayList()和Collections.emptyList()的区别emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方