Non-Public members unit testing

如果单元测试代码与项目源代码都在同一个项目下的话那么单元测试代码就可以测试到项目代码中的internal成员了,但是对于private等成员却是无能为力。一般情况下我们不会需要覆盖私有或受保护(protected)成员变量,但是我们会遇到很多需要测试私有方法的情况,比如一个逻辑复杂的公共方法可能会调用到多个小私有方法,这些小私有方法在责任的划分上是有独立性的。也就是说,在单元的意义上讲这些小方法也应该有各自独立的单元测试,这样会大大方便往后的调试工作(如果真的有需要的话)。现在的问题是,因为它们是私有的,所以无法直接对其进行访问,解决方案目前有两种;一种是改变private为internal或public方便单元测试,然后在最终发布前将接口再改回来;另一种则是通过使用反射直接访问private成员。

第一种个人觉得不太妥当,因为接口多了难免要漏掉一些改动,而且在开发时全部接口都是public的话会引起很多误解与混乱。

第二种也有优缺点,优点很明显,不需要为测试改动接口,灵活性很强,即使Release版也可以做单元测试(前提是在Obfuscation之前,因为Obfuscation很容易影响到反射)。缺点是要考虑反射的权限问题,另外写反射需要更多比较繁琐的代码。

那么初步的选择务必会锁定在反射上,接下来要解决的问题就是简化用反射对现有对象成员访问的复杂与繁琐度,关于这一点大家可以参考Facade模式自行实现一个简化反射操作的Utilitiy Library。

转载于:https://www.cnblogs.com/cavingdeep/archive/2005/07/08/188216.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值