所有的斷言被定義在
3. 測試注冊簿
3.1 常用相關函數
#include <CUnit/TestDB.h> typedef struct CU_TestRegistry typedef CU_TestRegistry* CU_pTestRegistry CU_ErrorCode CU_initialize_registry(void) void CU_cleanup_registry(void) CU_BOOL CU_registry_initialized(void) CU_pTestRegistry CU_get_registry(void) CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry) CU_pTestRegistry CU_create_new_registry(void) void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry) |
3.2 注冊簿內部結構體
測試注冊簿是測試包和相關測試用例的倉庫。當用戶添加測試包或測試用例時,CUnit維護當前活動的測試注冊簿的狀態更新,當用戶選擇運行所有測試用例時,當前活動的注冊簿中所有的測試包均被執行。
測試注冊簿結構在中定義,它包括所有測試包的數量、所有測試用例的數量以及一個指向該注冊簿中測試包鏈表的指針:
typedef struct CU_TestRegistry { unsigned int uiNumberOfSuites; unsigned int uiNumberOfTests; CU_pSuite pSuite; } CU_TestRegistry; typedef CU_TestRegistry* CU_pTestRegistry; |
3.3 與注冊簿相關的其它函數
CU_pTestRegistry CU_get_registry(void) CU_pTestRegistry CU_set_registry(CU_pTestRegistry pTestRegistry) CU_pTestRegistry CU_create_new_registry(void) void CU_destroy_existing_registry(CU_pTestRegistry* ppRegistry) |
4. 測試包及測試用例的管理
4.1 相關函數及結構
#include <CUnit/TestDB.h> typedef struct CU_Suite typedef CU_Suite* CU_pSuite typedef struct CU_Test typedef CU_Test* CU_pTest typedef void (*CU_TestFunc)(void) typedef int (*CU_InitializeFunc)(void) typedef int (*CU_CleanupFunc)(void) CU_pSuite CU_add_suite(const char* strName,CU_InitializeFunc pInit,CU_CleanupFunc pClean); CU_pTest CU_add_test(CU_pSuite pSuite,const char* strName,CU_TestFunc pTestFunc); typedef struct CU_TestInfo typedef struct CU_SuiteInfo CU_ErrorCode CU_register_suites(CU_SuiteInfo suite_info[]); CU_ErrorCode CU_register_nsuites(int suite_count, ...); CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive) CU_ErrorCode CU_set_test_active(CU_pTest, CU_BOOL fNewActive) CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName) CU_ErrorCode CU_set_suite_initfunc(CU_pSuite pSuite, CU_InitializeFunc pNewInit) CU_ErrorCode CU_set_suite_cleanupfunc(CU_pSuite pSuite, CU_CleanupFunc pNewClean) CU_ErrorCode CU_set_test_name(CU_pTest pTest, const char *strNewName) CU_ErrorCode CU_set_test_func(CU_pTest pTest, CU_TestFunc pNewFunc) CU_pSuite CU_get_suite(const char* strName) CU_pSuite CU_get_suite_at_pos(unsigned int pos) unsigned int CU_get_suite_pos(CU_pSuite pSuite) unsigned int CU_get_suite_pos_by_name(const char* strName) CU_pTest CU_get_test(CU_pSuite pSuite, const char *strName) CU_pTest CU_get_test_at_pos(CU_pSuite pSuite, unsigned int pos) unsigned int CU_get_test_pos(CU_pSuite pSuite, CU_pTest pTest) unsigned int CU_get_test_pos_by_name(CU_pSuite pSuite, const char *strName) |
4.2 注冊測試包
CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean) |
創建一個測試包,該測試包擁有自己特定的名字、初始化函數及清理函數。該測試包被注冊到一個測試注冊簿,該注冊簿在添加任意測試包之前須初始化。當前版本不支持獨立于注冊簿之外的測試包的創建,該函數不應該在測試執行期間被調用。
在注冊簿中,推薦每個測試包有唯一的名字,這樣可以通過名字查找測試包。在上述函數中,測試包的初始化函數和清理函數是可選的,如果不需要這些函數可以傳參數NULL。
原文轉自:http://www.uml.org.cn/Test/201404151.asp