產品函數:
void CMyClass::Grow(int years)
{
mAge += years;
if(mAge < 10)
mPhase = "兒童";
else if(mAge <20)
mPhase = "少年";
else if(mAge <45)
mPhase = "青年";
else if(mAge <60)
mPhase = "中年";
else
mPhase = "老年";
}
測試函數中的一個測試用例:
CaseBegin(); {
int years = 1;
pObj->mAge = 8;
pObj->Grow(years);
ASSERT( pObj->mAge == 9 );
ASSERT( pObj->mPhase == "兒童" );
}CaseEnd();
在輸入數據中對被測試類的成員變量mAge進行賦值,在預期輸出中斷言成員變量的值,F在可以看到老納所推薦的格式的好處了吧,這種格式可以適應很復雜的測試。在輸入數據部分還可以調用其他成員函數,例如:執行被測試函數前可能需要讀取文件中的數據保存到成員變量,或需要連接數據庫,老納把這些操作稱為初始化操作。例如,上例中 ASSERT( ...)之前可以加pObj->OpenFile(); 。為了訪問私有成員,可以將測試類定義為產品類的友元類。例如,定義一個宏:
#define UNIT_TEST(cls) friend class cls##Tester;
文章來源于領測軟件測試網 http://www.kjueaiud.com/