?????????????

??????????????????????????????????????胁???????????????

????????????????????????????写????????????????????????????????锟�??????????????????????????????些??????绲�???????????????????????????????????????????????????????????????????????????????????????????????????????70%?????????未?????????????????????小???????些?????????????BUG?????????????????????????????????????????????????????????????????????????谐????????????????????????????????????????路??

??????????????????????????????写???????械???????????????????写?????????????????????????????

????????谐???????????????写?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

??????????????????????????????????????????????????????????????????????????????????????????????????????????????????位????????????????????????????????????????????????位?????????????????????????????????胁??????????????????????????????????????????????????????????????????????????效??????????

?????????????????????????(???泻???)???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????泄????????C++?????????????????????????????????????????????????写????????????????斜?写(inline????)??????????????写?????????????胁???(????????????????????)??

????????????????????????????绲�??????XP???????????TDD?????????????????????写???????????锌???????????????校????????????????????????????????效??芯?????????????????????????写????????????????写????????????????????????写??????????????写?????????????写???????????胁??????????????????????谓???写??????????????????写????????????蟹?????????????????????????????写?????????????????????????????????????????????????????写????????????????????????小??

????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????写?????????????????????些???????????纾�????????????????????????未??写????????????写???????????????????????????????????????????????????????????锌?????????????????????????????????写????????????????校???????????????????????????????2??????????????2?????????????????????????????????????????????

????????????????写

?????????????????????????????Java???????????C++????????????????????????????????C++?????????????????????????????????VC6.0??

?????????

????????class CMyClass

????????{

????????public:

????????int Add(int i?? int j);

????????CMyClass();

????????virtual ~CMyClass();

????private:

????????int mAge; //????

????????CString mPhase; //?????危???"????"??"????"

????????};

??????????????????CMyClassTester??????????????谐??????????

????????void CMyClassTester::CaseBegin()

????????{

????????//pObj??CMyClassTester????????????????????????????

????????//?????????械????????????pObj?????????????????

????????pObj = new CMyClass();

????????}

????void CMyClassTester::CaseEnd()

????????{

????????delete pObj;

????????}

??????????????CaseBegin()??CaseEnd()????????????????????????????????????????CaseBegin()????尾???????CaseEnd()??

????????????????????????????????

????????int CMyClass::Add(int i?? int j)

????????{

????????return i+j;

????????}

??????????????????????

????????void CMyClassTester::Add_int_int()

????????{

????????}

?????????????????????????????????????????????????????????????????????????????????????????????

????????void CMyClassTester::Add_int_int()

????????{

????????//?????????????

????????CaseBegin(); { //1

????????int i = 0; //2

????????int j = 0; //3

????????int ret = pObj->Add(i?? j); //4

????????ASSERT(ret == 0); //5

????????}CaseEnd(); //6

????????}

??????1???6?薪??????????????????????{}????????????????????????????????????????????????????????????????

??????2???3??????????????????4???????????????????些???????????????????????5????????????????????????????????????????????????ASSERT??VC?????????????????????????????貌????????械????????????????霉???????????

????????械?????煤?????2??????4??5?锌????写???校?ASSERT(pObj->Add(0?? 0) == 0); ???????????????????????????????????????????????????????????????????泻????????????????????????????????????椋�?????????????????????椤�

????????????????????????????????胁????????????????????????/??????????????????????????????????????????????????小?????????????????????????/??????????????????????????

????????????????

?????????????????????????????????????????????????????????????????????????????????????????????????????????些????????????????????????????????????????????????????????????????????????些?????????????????????????????????IOy?濉Oy????????????????????????????????y?澹�???纾�?????????????????????????????????????????????械??????????????????????????????????????????????????????????????写???????????????????????????????写???????????????????????????????????????????写?????????(???????)???????????????????IOy?澹�????????????????????????????????????????瓒�????????????斜??????????????卸??????????????????????????????????泄???????

?????????????

????????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???懈?????????????卸?????????????????????????????????????????????????????????????????????????????????????????????????????????纾�??斜???????????????????????械???????娴�??????????????????????????????些?????????????????????纾�?????? ASSERT( ...)???????pObj->OpenFile(); ??????????谐????????????????????????????????纾�?????????

????????#define UNIT_TEST(cls) friend class cls##Tester;

??????????????????屑???写???UNIT_TEST(ClassName)??

?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????/????????????????胁????????????胁????????????小????????????????????????????????????????

??????????????????????????????????????????????????IOy?澹�???????????校??????????????????卸??????????瓒�??????????校??????????????????????谩????????????????????锌??????????胁???????????????????????????????????????????写????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????

????????????

???????????????Trim???????????????????????????????????????????????????????锌???????锌???????锌??????????

???????????

?????????锌?????????????????????

??????????????????????????????效??围??0-100????????????????????0??100??

???????????

?????????????????????围??????????????????????????????????????????斜????????????小??0?????100???????????????????????????????????????????????????????????????????????????????????????????????

????????????????????????????????????????械???????????????????????泻??????小????????锟�????????????????????????????????????????????????????????????????????????写?????????妗�????????????????????????????????????????????????????

?????????懈??? ??????

????????????????????????????????????????????谓???胁??????????????????????????????????????????????????????????????????????谓???胁????????????????????胁?????????????????胁?????斜????????????????????????????????纾�????????泄??????????????????????????????澹�?????????????????????????????些???????????????????????些???????????????????????????????????胁???????????????胁???????????????????????????????????????屑?????????????纾�???????????????涓�??????????涓�??未???????????未???????????????????未?????

??????胁?????????????????????????????????????????????????????????????位????校???????????????????????????????路??????涓�??????????械???????????????????????卸??????????????????????????????????????????????????????泄??????????????????锟�???????????????????械????????????????械????????????????????危???????????????????????????????????????锌????????????????????????????????????????危??????????????????????????????????锌????????????????些??????芯?????????????????泄??????????????????????????纾�????写??&&?????写!????????梅???????????????????????????????????些??????????妫�?????????????????????????????????????????????????????????????????????????????????效??????????????效????????????????????????????????????????????????涓�????????????????????路??????????????????????????????????????????????????????????危????????????????????危?????????????????????????????????????????????????????????????????????????????????????????????????????????些?????????????????鈥�??????????????娼�??????????????

?????????胁??????????????????????????榧�????薪????????????????????????????????????????????????????????????????????????些???????胁??????????????????????????????????????????????胁???????????懈?????????未??????????位?????????????????????纾�????????????未??????械????????????????????????????????????????????????????路????????????????????????胁?????????????????????????????y???????????????????????????????????些????????????????????????????????????????????????些?????????????

?????濉�??????????

??????????????????????????????????????????????C++??????

??????????CppUnit??????C++?????????????妫�???????????????????????????????写????????CppUnit????????锟�?????????????????CppUnit???????????????Cpluser ???????CppUnit????????????????????CppUnit??????????

??????????C++Test??????Parasoft???????????C++Test??????????????????C/C++?????????????????????????魏?C/C++???????????????????????????????????????????????????????????????????????????????????????????????????????? http://www.superst.com.cn/softwares_testing_c_cpptest.htm ????????????????????????写些????C++Test???????????????????????????????????????????????????????C++Test??????????????霉???????????????????C++Test?????????????????????e娑�????????????????????????妫�??????????????????

?????????Visual Unit?????VU???????????????????????????????????????????????渭???????????????????????????煤???谩????????????????????????????????? ???????????? ???????????????效????懈??? ??????? ??效????????????????????????????VU??????????????????????????????????????????????涓�????????????????????路?????????VU????????????????????????????VU???????????效??????????????????????????????????????浠�????????????????????????????????????????????榛�????????????????????????????????????????????????????????味??????????貌????????????????????????????????????????????????????????????妫�????????渭???