C++:编写可测试的代码

问题

你有没有这样的经历:明白测试对提升软件质量的重要性,着手进行编写测试代码的时候,发现
1. 单元耦合过多,使用一个类往往要牵扯到比自己预想的多其他类,写不出设想中的简洁的测试代码,影响测试的心情与决心。
2. 无法确定合适的测试颗粒度。如果每个类都做单元测试,整体的代码量会提高很多,所需的时间提升,不能满足项目工期的要求。
针对在测试中遇到的问题,《大规模C++程序设计》的作者John Lakos 给出了自己的解决方案。


编写可测试的代码

John Lakos指出:代码的可测试性在代码编写之前需要经过精心的设计。他通过组件和分层的概念从框架上确定了测试的颗粒度与测试方法。


组件


他认为组件是程序设计的最基本单位。
组件从文件的角度来说,一个组件就是一个单独的C++源文件,从逻辑上来讲,一个组件是一个单独的逻辑功能的具体实现。值得注意的是,一个组件可能包含不止一个类,即意味着一个C++ 源文件可能多个多个类的定义,而且这个几个类相互耦合,共同完成一个功能。从客户端调用的角度来看,客户端只能看到组件本身的外部接口,而无法看到组件内定义的其他类。
一个组件即可实现一个单独的功能。如果把一个类当成一个源文件,那么对于一个功能需要好几个类内部类共同实现某一功能时,当使用功能时,则需要把相关类的头文件全部引入,而不是直接只要引入一个单独的组件头文件。


分层


分层的模型借鉴的是硬件设计的层次结构。在一个集成模块中,最外一层的输入是第0层。对应到软件上,用编程语言本身或者独立第三方库或者编程框架为第0层。组件的依

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值