創建一個測試包,該測試包擁有自己特定的名字、初始化函數及清理函數。該測試包被注冊到一個測試注冊簿,該注冊簿在添加任意測試包之前須初始化。當前版本不支持獨立于注冊簿之外的測試包的創建,該函數不應該在測試執行期間被調用。
在注冊簿中,推薦每個測試包有唯一的名字,這樣可以通過名字查找測試包。在上述函數中,測試包的初始化函數和清理函數是可選的,如果不需要這些函數可以傳參數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