您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > cppUnit
用CppUnit做C单元测试
作者:网络转载 发布时间:[ 2013/12/25 10:51:54 ] 推荐标签:软件测试 开源 测试

  测试过程如下

启动程序
点击“Run”
调用Call setUp()方法: 构建我们的测试对象fixture
调用第一个测试方法
调用tearDown() 方法,清除对象
调用Call setUp()方法: 构建我们的测试对象fixture
调用第一个测试方法
调用Call setUp()方法: 构建我们的测试对象fixture
...
像下面的形式:

#include "DiskDataTestCase.h"

CPPUNIT_TEST_SUITE_REGISTRATION(DiskDataTestCase);


void DiskDataTestCase::setUp()
{
fixture = new DiskData();
}

void DiskDataTestCase::tearDown()
{
delete fixture;
fixture = NULL;
}


void DiskDataTestCase::loadTest()
{
// our load test logic
}


void DiskDataTestCase::storeTest()
{
// our store test logic
}


编写测试用例

  一旦我们知道我们要测什么之后,我们可以写测试用例了。我们能够执行所有的我们需要的操作:使用普通库函数,第三方库,win32api库函数,或简单使用c++内部操作

  有时候,我们需要调用外部辅助文件或者数据库,比较外部文件和内部数据是否一致。

  每发现一个错误时9比如发现内部数据和外部数据不同我们创建一个异常,使用 CPPUNIT_FAIL(message) 来显示异常信息。

  检测一个条件使用
CPPUNIT_ASSERT(condition):如果为false抛出异常
CPPUNIT_ASSERT_MESSAGE(message, condition): 如果为false抛出制定的信息。
CPPUNIT_ASSERT_EQUAL(expected,current): 检测期望值
CPPUNIT_ASSERT_EQUAL_MESSAGE(message,expected,current): 当比较值不相等时候抛出的制定的信息。
CPPUNIT_ASSERT_DOUBLES_EQUAL(expected,current,delta): 带精度的比较
  下面是测试loadTest的例子,
//
// These are correct values stored in auxiliar file
//
#define AUX_FILENAME "ok_data.dat"
#define FILE_NUMBER 19
#define FILE_STRING "this is correct text stored in auxiliar file"

void DiskDataTestCase::loadTest()
{
// convert from relative to absolute path
TCHAR absoluteFilename[MAX_PATH];
DWORD size = MAX_PATH;

strcpy(absoluteFilename, AUX_FILENAME);
CPPUNIT_ASSERT( RelativeToAbsolutePath(absoluteFilename, &size) );

// executes action
CPPUNIT_ASSERT( fixture->load(absoluteFilename) );

// ...and check results with assertions
LPDATA loadedData = fixture->getData();

CPPUNIT_ASSERT(loadedData != NULL);
CPPUNIT_ASSERT_EQUAL(FILE_NUMBER, loadedData->number);
CPPUNIT_ASSERT( 0 == strcmp(FILE_STRING,
fixture->getData()->string) );
}

上一页12345下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd