51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4055|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-2-1 18:18:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
兄弟目前使用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()合在一起进行测试,但是当这种函数调用比较复杂的情况下测试用例的组织也变得复杂,请教各位是如何处理这种情况的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-2-1 20:32:31 | 只看该作者

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

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

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-21 10:36 , Processed in 0.073160 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表