.NET项目开发—浅谈面向对象的纵横向关系、多态入口,单元测试((2)

来源:未知 责任编辑:责任编辑 发表时间:2013-12-01 14:15 点击:

public class XmlConvert
   {
       protected virtual string ConvertReplace(StringBuilder NodeString)
       {
           return NodeString.ToString().Replace("XXX", "LLL");
       }
   }

有一个很简单的XmlConvert类,是框架内部使用的,现在它提供了一个Virtual方法ConvertReplace,我们想使用这个框架内部的类进行扩展;

public class CustomerXmlConvert : XmlConvert
{
    protected override string ConvertReplace(StringBuilder NodeString)
    {
        return base.ConvertReplace(NodeString).Replace("JJJ", "AAA");
    }
}

但是如果未能提供给我们一个多态入口,我们这个自定义的CustomerXmlConvert无法起作用;最近发现很多自定义的框架设计上就有这个问题,留有了扩展的类型和相应的方法,但是无法插入到框架内部去,所以特此分享一下;

4】多态的受保护方法的单元测试

受保护方法的单元测试一直都不太好解决,但是我们可以通过简单的继承方式来轻松的处理,就拿上面提到的XmlConvert类来举例;

public class XmlConvert
{
    protected virtual string ConvertReplace(StringBuilder NodeString)
    {
        return NodeString.ToString().Replace("XXX", "LLL");
    }
}

如果我们想测试它,直接使用类型继承就可以:

[TestClass]
public class XmlConvertTests : XmlConvert
{
    [TestMethod]
    public void XmlConvert_ConvertReplace_Normal()
    {
        StringBuilder testData = new StringBuilder("XXXJJJ");
        string testResult = this.ConvertReplace(testData);
        Assert.AreEqual(testResult, "JJJ");
    }
}

这里有一个很好的设计启发就是将方法碎片化尽量保持有返回值的操作,这样很好的进行Assert;其实提到单元测试,冥冥之中总觉得它与面向对象有着一脉相承的感觉,甚至单元测试、重构、面向对象都会起到互补的作用;

内容不多,只是简单的项目小小的总结,希望对大家有用,谢谢;

作者:王清培

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • 用C#制作屏幕捕获程序
  • .NET程序员项目开发必知必会—Dev环境中的集成测试用例执行时上
  • 遍历ArrayList易犯错误
  • C#对XML操作:一个处理XML文件的类(1)
  • .NET简谈反射(动态调用)
  • 使用C#编写LED样式时钟控件
  • DataList嵌套问题 如何删除内层子DataList的记录
  • 怎样用C#实现完整文档打印功能
  • .NET简谈自定义事务资源管理器
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1