创建一个测试包,该测试包拥有自己特定的名字、初始化函数及清理函数。该测试包被注册到一个测试注册簿,该注册簿在添加任意测试包之前须初始化。当前版本不支持独立于注册簿之外的测试包的创建,该函数不应该在测试执行期间被调用。
在注册簿中,推荐每个测试包有唯一的名字,这样可以通过名字查找测试包。在上述函数中,测试包的初始化函数和清理函数是可选的,如果不需要这些函数可以传参数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