测试驱动开发(TDD)的一些思考

       最近在学习测试驱动开发(TestDriven Development,简称TDD)。我的感受可以用这句来形容比较贴切,“理想总是饱满的,现实都是骨感的”。

       当我说“理想总是饱满的”时,那是因为TDD所致力于的目标所带来的好处,确实很诱人。代码松耦合、不惧代码重构等等,这些都是极具价值的。

        当我说“现实都是骨感的”时,那是因为想用TDD去开发项目,需要了解的东西确实比较多,不然你会发现实践TDD很难很难!怎样让代码具有可测试性,怎样处理依赖,怎样创建好的单元测试等等,这些都是要深入了解的。

以下是一些个人觉得一些很重要的知识点,仅供参考。每一个知识点都值得我们好好深究。我们的终极目标是理想和现代都应该是饱满的。


SOLID

  • SRP:Single ResponsibilityPrinciple
  • OCP:Open ClosedPrinciple
  • LSP:Liskov SubstitutionPrinciple
  • ISP:Interface SegregationPrinciple
  • DIP:DependencyInversion Principle

Uncle Bob著名的五大原则总结得非常好。你可能觉得很好理解,但付诸实践好像不是那么简单。当你真正能得心应手地付诸实践时,你会发现SOLID能极大地改善我们的代码。尤其是DIP,对TDD来说,很重要很重要。如果不能实现依赖隔离,我们就无法把测试仅仅局限在一小段代码内,于是那些没有隔离的依赖代码也会影响单元测试!


FIRST

  • Fast
  • Independent
  • Repeatable
  • Self-validating
  • Timely

这是写单元测试时,应该谨记的五大原则。


依赖注入(DependencyInjection)

单独拿出来说,那是因为太重要了。我们写代码的时候要特别注意依赖,我们常用依赖注入来创建接缝(Seam),这样在单元测试的时候才能模拟各种依赖。


Moq / AutoMoq

第三方库,利用他们可以轻易实现各种依赖的模拟。


Ninject、Autofac等

第三方库,这些能帮助我们自动地建立程序需要的对象树。


MVVM

程序高层架构应该实现分层。只用让UI层和业务逻辑层(business logic)分成,我们才能测试业务逻辑层。MVVM是一个非常好的架构,如果你开发基于XAML的程序,MVVM一定要掌握!


Prism、MVVM Light Toolkit等

第三方库,这些是帮我们更快实现MVVM的辅助库。非常好用。


        我的近期目标是也能写出好的能测试业务逻辑层的单元测试。我觉得业务逻辑层的单元测试比较难,只有很好的掌握了好多知识以后,才能写出很好的业务逻辑层的单元测试。加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值