也谈在NUnit中测试私有成员。

看到muddle在他的blog里讲到对非公有成员的测试问题,突然想到,我曾经在csdn上也问过这个问题,当时思归回答我说,测试也要遵守oop的原则,我一下很有感触,对这个问题有了一个新的看法。

我现在的想法就是私有成员是不应该测试的。

首先,NUnit这样的工具应该用来对外部接口进行测试,尤其在测试驱动开发里,你写下test case的时候,实际上是迫使你站到了用户的立场上,写下一个test case,其实也就是写下了一个use case,这使你对要开发的程序有更深一层次的理解,而用户显然是不应该知道私有成员这些实现细节的,如果你也测试私有成员的话就会破坏单元测试的这种功效。

其次,私有成员一定会被公有成员调用的,所以在测试公有成员的过程中,也就实现了对私有成员的测试,如果私有成员已经复杂到必须单独测试,你就应该考虑一下,是不是你的设计已经过于复杂了。很多情况下,私有成员有测试的需求,是因为设计时违反了Single Responsiblity Principle,你有必要将那些实现复杂功能的私有成员分离出来,写成一个独立的类。

XP中有一个说法:在想办法使自己写的代码变得易于测试的时候,好的设计也就浮现出来了,所以会有测试即设计的说法。当你写的类很难测试的时候,你就应该考虑一下,是不是你的设计中出现了Bad Smell

转载于:https://www.cnblogs.com/Hush/archive/2004/04/07/5472.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值