单元测试工具 CUnit 简介(3)

发表于:2015-05-07来源:uml.org.cn作者:火龙果软件点击数: 标签:单元测试工具
创建一个测试包,该测试包拥有自己特定的名字、初始化函数及清理函数。该测试包被注册到一个测试注册簿,该注册簿在添加任意测试包之前须初始化。

创建一个测试包,该测试包拥有自己特定的名字、初始化函数及清理函数。该测试包被注册到一个测试注册簿,该注册簿在添加任意测试包之前须初始化。当前版本不支持独立于注册簿之外的测试包的创建,该函数不应该在测试执行期间被调用。

在注册簿中,推荐每个测试包有唯一的名字,这样可以通过名字查找测试包。在上述函数中,测试包的初始化函数和清理函数是可选的,如果不需要这些函数可以传参数NULL。

该函数返回值分为五种:

CUE_SUCCESS suite creation was successful.

  CUE_NOREGISTRY Error the registry has not been initialized.

  CUE_NO_SUITENAME ErrorstrName was

  NULL.CUE_DUP_SUITE Warning the suite's name was not unique.

  CUE_NOMEMORY Error memory allocation failed.

4.3 添加测试用例到测试包

CU_pTest CU_add_test(CU_pSuite pSuite, const char* strName, CU_TestFunc pTestFunc)

创建一个测试用例,该测试包拥有自己特定的名字、初始化函数及清理函数。该测试用例被打包到一个测试包,当前版本不支持独立于测试包之外的创建,该函数不应该在测试执行期间被调用。

在单个测试包中,推荐每个测试用例有唯一的名字,这样可以通过名字查找测试用例。参数接受一个测试函数的函数指针,不可以为空,当执行测试时,该函数将被调用。测试函数没有参数也没有返回值。

该函数返回值分为7种:

CUE_SUCCESS suite creation was successful.

  CUE_NOREGISTRY Error: the registry has not been initialized.

  CUE_NOSUITE Error: the specified suite was NULL or invalid.

  CUE_NO_TESTNAME Error: strName was NULL.

  CUE_NO_TEST Error: pTestFunc was NULL or invalid.

  CUE_DUP_TEST Warning: the test's name was not unique.

  CUE_NOMEMORY Error: memory allocation failed.

4.4 测试包及测试用例管理的快捷方法

CUnit定义了许多类似如下的宏:

#define CU_ADD_TEST(suite, test) (CU_add_test(suite, #test, (CU_TestFunc)test))

这些宏可以针对测试函数名字,自动生成拥有惟一名字的测试用例,并将该测试用例添加到指定的测试包,用户应该验证返回值以保证正常添加。

CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[])

  CU_ErrorCode CU_register_nsuites(int suite_count, ...)

对于拥有很多测试包和测试用例的大型测试结构,管理测试包和测试用例的关联和注册是相当乏味和易出错的。CUnit提供了一个特殊的注册系统来帮助用户管理测试包和测试用例。这个系统将测试包的注册和测试用例的关联集中起来,以缩减用户的代码量。

CU_TestInfo实例可以将许多测试用例集中放到一个数组,以便于关联到一个测试包。每个数组元素包括一个惟一的名字和测试函数。该数组必须以CU_TEST_INFO_NULL结尾。

CU_TestInfo test_array1[] = {
{ "testname1", test_func1 },
{ "testname2", test_func2 },
{ "testname3", test_func3 },
CU_TEST_INFO_NULL,
};

同样的,CU_SuiteInfo也提供类似的封装功能,它将测试包名字、测试包初始化函数、清理函数和其关联的测试用例封装起来。

原文转自:http://www.uml.org.cn/Test/201404151.asp