天天看点

依赖属性之“风云再起”五十二. 其他协助类测试代码十三. 其他协助类的实现代码十四. 回归并统计覆盖率十五. 简单验证依赖属性系统十六. 本文总结十七. 相关代码下载十八.系列进度

这里就简单写一下对DependencyObjectTypeTest的测试代码:

由于它的功能比较简单,所以我们就不做过多介绍,大家想了解更多,可以参看代码。

LocalValueEnumerator:手动实现一个IEnumerator来方便访问LocalValue

   DependencyPropertyChangedEventArgs:PropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)的参数,它的第一个参数为该DependencyProperty、第二个参数为原来的值、第三个参数为改变了的值。

DependencyPropertyKey:构造函数传入该DependencyProperty,然后通过Type来OverrideMetadata,此类只是起到了封装作用。

  DependencyObjectType:用静态Dictionary<Type, DependencyObjectType>来存储DependencyObjectType,主要有FromSystemType、 IsInstanceOfType和IsSubclassOf三个功能。

  在上面的开发过程中,我们会不断的运行和查看代码通过情况,最后我们也来看一下测试用例的总体通过情况,其实在前面已经运行过很多次了,因为每个功能都要经过”测试代码-功能代码-测试-重构“等步骤。

<a href="http://images.cnblogs.com/cnblogs_com/KnightsWarrior/WindowsLiveWriter/1e0ba9e88ab7_11359/2010-9-23%2019-41-10_4.png"></a>

  最后也看一下代码测试覆盖率,代码测试覆盖率对一个系统或者产品来说是一个比较重要的质量指标,可以通过它看出系统的稳定性和可控性。一般在项目的开发中,我们都会以85%~90%的测试代码覆盖率作为达标的参考标准。

<a href="http://images.cnblogs.com/cnblogs_com/KnightsWarrior/WindowsLiveWriter/1e0ba9e88ab7_11359/2010-9-23%2019-40-16_4.png"></a>

  由于MONO本身对依赖属性没有那么健全,我们也没有写那么详细的测试代码,中间直接就实现了一些功能,严格地说,所以本文并没有完全遵从正规的测试驱动开发流程。

其实通过上面的测试用例,基本就用不着再单独测试了,但鉴于覆盖率比较低的问题,所以最后我们还是来测试一下刚才构建的依赖属性系统:

测试结果:

<a href="http://images.cnblogs.com/cnblogs_com/KnightsWarrior/WindowsLiveWriter/d1051bd1bd80_136FD/2010-8-26%201-29-16_2.png"></a>

到处为止,我们这篇文章也宣告结束。

  在文章的最后,和往常一样,我们提供代码的下载,再次温馨提示:这几篇文章最重要的就是下载代码来细细研究,代码里面也添加了比较详细的注释,如果大家有什么问题,也可以直接和我联系,如果有不正确的地方也希望多多海涵并能给我及时反馈,我将感激不尽!

前篇 <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/07/05/1771101.html">· 1. WPF 基础到企业应用系列1——开篇有益</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/07/06/1771831.html">· 2. WPF 基础到企业应用系列2——WPF前世今生</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/07/09/1774059.html">· 3. WPF 基础到企业应用系列3——WPF开发漫谈</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/07/14/1776916.html">· 4. WPF 基础到企业应用系列4——WPF千年轮回</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/07/23/1783388.html">· 5. WPF 基础到企业应用系列5——WPF千年轮回 续前缘</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/08/02/1790131.html">· 6. WPF 基础到企业应用系列6——WPF布局全接触</a> <a href="http://www.cnblogs.com/KnightsWarrior/archive/2010/09/27/1836372.html">· 8. WPF 基础到企业应用系列8——依赖属性之“风云再起”</a> · 9. WPF 基础到企业应用系列9——深入剖析WPF事件机制 (核心篇)      ·10. WPF 基础到企业应用系列10——WPF事件机制之“刨根问底” ·11. WPF 基础到企业应用系列11——深入剖析WPF命令机制 (核心篇)   ·12. WPF 基础到企业应用系列12——WPF命令之“庖丁解牛” ·13. WPF 基础到企业应用系列13——WPF Binding全接触 (核心篇)    ·14. WPF 基础到企业应用系列14——WPF Binding之“面面俱到” 中篇 · 1. 资源、样式、模板 · 2. 尺寸缩放、定位与变换元素 · 3. WPF控件分类介绍与使用技巧 · 4. 用户控件和自定义控件开发 · 5. 多语言、皮肤和主题 · 6. 2D图形 · 7. 3D图形 · 8. 动画(几种动画的应用) · 9. 音频、视频、语音 · 10. 文档、打印、报表 后篇 · 1. Win32、Windows Form以及ActiveX之间的互用性 · 2. 构建并部署应用程序(ClickOnce部署、微软setup /InstallShield+自动更新组件) · 3. MVC、MVP、MVVM全解析 · 4. WPF的模式讲解及实例(MVC Demo) · 5. WPF的模式讲解及实例(MVP Demo) · 6. WPF的模式讲解及实例(MVVM Demo) · 7. 性能优化(WPF项目的瓶颈) · 8.一个完整WPF项目(普通架构版) · 9. 一个完整WPF项目(MVVM架构版) · 10. WPF 4.0新功能

本文转自KnightsWarrior51CTO博客,原文链接:http://blog.51cto.com/knightswarrior/405236 ,如需转载请自行联系原作者

继续阅读