google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

cppunit如何处理被测试函数调用其他函数的情况

cppunit如何处理被测试函数调用其他函数的情况


兄弟目前使用cppunit做单元测试,准备针对每个函数设计一个测试函数,可是不知道如何处理被测函数调用其他函数的情况。举例如下:

class A
{
private:
  void somefunc(){...}
public:
  int add(int a,int b){ return a+b;}
  void func(){ somefunc();}
}

针对class A进行单元测试时,设计下面的测试类:

class ATest
{
  CPPUNIT_TEST_SUITE( ATest);
  CPPUNIT_TEST( test_constructor );
  CPPUNIT_TEST( test_model );
  CPPUNIT_TEST( test_view );
  CPPUNIT_TEST_SUITE_END();

public:
  void test_somefunc();
  void test_add();
  void test_func();
}
test_add()是cppunit非常容易解决的情况,根据返回值判断函数的执行是否正确,大多数cppunit的文章都由该情况的处理方法。可是对于void func()函数,由于他没有自己的输出数据,所以很难直接判断它的正确性,除非将他和void somefunc()合在一起进行测试,但是当这种函数调用比较复杂的情况下测试用例的组织也变得复杂,请教各位是如何处理这种情况的?

TOP

输出输出数据不仅仅是返回值和参数,代码总是干了什么的


几点看法,仅供参考:
1、单元测试从底层向上测试,func()调用了 somefunc(),先测试somefunc(),再测试func()。
2、一个代码单元所涉及的输入输出数据有很多,除了参数、返回值外,还有成员变量、局部变量,甚至还可能读写文件和数据库,一个函数,如func(),虽然没有参数和返回值,但它总是做了什么,例如,如果它的功能是计算并修改了两个成员变量,那么,测试该函数时,设定这两个成员变量的初始值作为输入,运行代码后判断这两个成员变量的结果是否符合预期,这就是测试用例了。
3、单元测试是可以测试很复杂的代码的,除了直接写在界面类的代码难于测试外,如果代码结构不是太差,绝大多数代码都可以测试。如果只能测试简单的代码,单元测试也就没有什么实际意义了。
4、建议读一下精华区的《全面介绍单元测试》。
C/C++单元测试工具Visual Unit
http://www.KaileSoft.cn

TOP

 
当前时区 GMT+8, 现在时间是 2008-9-8 14:51Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹