最近在寫代碼的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的對象的創建而創建。