#include "MyClassTester.h"
#include <assert.h>
void CMyClassTester::CaseBegin(void)
{
//pObj是CMyClassTester类的成员变量,是被测试类的对象的指针,
//为求简单,所有的测试类都可以用pObj命名被测试对象的指针。
pObj = new CMyClass();
}
void CMyClassTester::CaseEnd(void)
{
delete pObj;
}
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
//*
//示例中的格式显得很不简洁,2、3、4、5行可以合写为一 行:
//ASSERT(pObj->Add(0, 0) == 0);但这种不简洁的格式却是老纳
//极力推荐的,因为它一目了然,易于建立多个测试用例,并且具
//有很好的适应性,同时,也是极佳的代码文档,总之老纳建议:
//输入数据和预期输出要自成一块。
//*
}
void CMyClassTester::Grow_int(void)
{
CaseBegin();{
int years = 1;
pObj->mAge = 8;
pObj->Grow(years);
assert( pObj->mAge == 9 );
assert( pObj->mPhase == "儿童" );
}CaseEnd();
//例如,定义一个宏:
//#define UNIT_TEST(cls) friend class cls##Tester;
//然后在产品类声明中加一行代码:UNIT_TEST(ClassName)。
}