最近在写代码的UT case时注意到:函数
在写某个类的test suit时,若是这个类既有组合(Composition),又有聚合关系(Aggregation)。ui
组合关系(Composition):部分和总体之间具备相同的生命周期,当总体消亡后,部分也将消亡。就像大雁的翅膀和大雁是组合关系。代码实现时,部分类在总体类的构造函数中被构造,在析构函数中被析构。spa
聚合关系(Aggregation):部分与总体之间并无相同的生命周期,总体消亡后部分能够独立存在。就像大雁和雁群是聚合关系。代码实现时,总体类中传入一个部分类的指针,部分类已经在总体类外被构造,于是在总体类析构的时候,部分类并无被析构。指针
class A对象
{生命周期
public:it
。。。。。。//member functionsio
private:function
B m_objB;//Composition,class
std:shared_ptr<IC> m_objC;//Aggregation
};
在TDD中,m_objC一般是须要mock 的,而m_objB是不能使用mock的,由于m_objB会随着A的对象的创建而创建。