刚刚搜素到的 vc 进行单元 测试如何使用VC6进行单元测试

多数讲述单元测试的文章都是以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、3、4、5行可以合写为一行:ASSERT(pObj->Add(0, 0) == 0); 但这种不简洁的格式却是我们推荐的,因为它一目了然,易于建立多个测试用例,并且具有很好的适应性,同时,也是极佳的代码文档,总之,我们建议:输入数据和预期输出要自成一块。   建立了第一个测试用例后,应编译并运行测试,以排除语法错误,然后,使用拷贝/修改的办法建立其他测试用例。由于各个测试用例之间的差别往往很小,通常只需修改一两个数据,拷贝/修改是建立多个测试用例的最快捷办法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值