1. registry初始化
CU_ErrorCode CU_initialize_registry(void);
//用户在调用任何其他CUnit函数之前调用本函数,如果不这样做可能会导致系统崩溃。
返回值为:
CUE_SUCCESS初始化成功。
CUE_NOMEMORY内存分配失败。
2. registry释放
void CU_cleanup_registry(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. 向registry中增加suites
CU_pSuite CU_add_suite(const char* strName, CU_InitializeFunc pInit, CU_CleanupFunc pClean);
//创建一个新的测试集,具有指定的名称、初始化函数、清除函数。
返回值为:
l CUE_SUCCESS suite创建成功。
l CUE_NOREGISTRY registry尚未初始化。
l CUE_NO_SUITENAME strName为NULL。
l CUE_DUP_SUITE suite的名称已经存在。
l CUE_NOMEMORY 内存分配失败。
4. 向registry中增加test
CU_pTest CU_add_test(CU_pSuite pSuite, const char* strName, CU_TestFunc pTestFunc)
//创建一个新的具有指定名称和测试功能的test,并在指定的suite中注册。该suite必须是已经使用CU_add_suite()创建的。
返回值为:
l CUE_SUCCESS suite创建成功。
l CUE_NOSUITE 指定的suite是Null或无效。
l CUE_NO_TESTNAME strName为NULL。
l CUE_NO_TEST pTestFunc为null或无效。
l CUE_DUP_TEST test的名称已存在。
l CUE_NOMEMORY 内存分配失败。
5. 运行Tests
1) Automated Mode 自动输出到XML文件
非交互式
void CU_automated_run_tests(void);
//运行在所有suites中注册的所有tests
CU_ErrorCode CU_list_tests_to_file(void);
//列出已注册的suites和与其相关联的tests
void CU_set_output_filename(const char* szFilenameRoot);
//设置-Results.xml和-Listing.xml的名字
2) Basic Mode 基本扩展编程方式
非交互式
CU_ErrorCode CU_basic_run_tests(void);
//运行在所有suites中注册的所有tests
CU_ErrorCode CU_basic_run_suite(CU_pSuite pSuite);
//在一个指定的suite中运行其下所有的tests
CU_ErrorCode CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest);
//在一个指定的suite中运行指定的test
void CU_basic_set_mode(CU_BasicRunMode mode);
//设置运行的基本模式,控制着tests的输出,主要有下面几种
l CU_BRM_NORMAL 失败和运行概况打印。
l CU_BRM_SILENT 只打印错误消息。
l CU_BRM_VERBOSE Maximum output of run details。
CU_BasicRunMode CU_basic_get_mode(void);
//检测当前的运行模式
void CU_basic_show_failures(CU_pFailureRecord pFailure);
//将所有的失败信息打印到stdout,不依赖于运行模式
3) Interactive Console Mode 控制台方式
交互式
void CU_console_run_tests(void);
//启动控制台方式
4) Interactive Curses Mode Curses图形接口
交互式,只适用于Unix/Linux
void CU_curses_run_tests(void);
//启动Curses方式,需要应用程序中支持ncurses库支持
6. 获取接口目前测试运行的结果
用户代码有时可能需要这些结果。主要包含以下函数:
unsigned int CU_get_number_of_suites_run(void)
unsigned int CU_get_number_of_suites_failed(void)
unsigned int CU_get_number_of_tests_run(void)
unsigned int CU_get_number_of_tests_failed(void)
unsigned int CU_get_number_of_asserts(void)
unsigned int CU_get_number_of_successes(void)
unsigned int CU_get_number_of_failures(void)
const CU_pRunSummary CU_get_run_summary(void)
const CU_pFailureRecord CU_get_failure_list(void)
unsigned int CU_get_number_of_failure_records(void)
7. 错误处理
CU_ErrorCode CU_get_error(void)
const char* CU_get_error_msg(void)
//第一个函数返回错误代码本身,而第二个函数返回一条消息,描述错误信息
Error Value |
Description |
CUE_SUCCESS |
No error condition. |
CUE_NOMEMORY |
Memory allocation failed. |
CUE_NOREGISTRY |
Test registry not initialized. |
CUE_REGISTRY_EXISTS |
Attempt to CU_set_registry() without CU_cleanup_registry(). |
CUE_NOSUITE |
A required CU_pSuite pointer was NULL. |
CUE_NO_SUITENAME |
Required CU_Suite name not provided. |
CUE_SINIT_FAILED |
Suite initialization failed. |
CUE_SCLEAN_FAILED |
Suite cleanup failed. |
CUE_DUP_SUITE |
Duplicate suite name not allowed. |
CUE_NOTEST |
A required CU_pTest pointer was NULL. |
CUE_NO_TESTNAME |
Required CU_Test name not provided. |
CUE_DUP_TEST |
Duplicate test case name not allowed. |
CUE_TEST_NOT_IN_SUITE |
Test is not registered in the specified suite. |
CUE_FOPEN_FAILED |
An error occurred opening a file. |
CUE_FCLOSE_FAILED |
An error occurred closing a file. |
CUE_BAD_FILENAME |
A bad filename was requested (NULL, empty, nonexistent, etc.). |
CUE_WRITE_ERROR |
An error occurred during a write to a file. |
void CU_set_error_action(CU_ErrorAction action)
CU_ErrorAction CU_get_error_action(void)
//设置错误发生时,系统的行为
Error Value |
Description |
CUEA_IGNORE |
错误发生时继续执行(默认) |
CUEA_FAIL |
错误发生时应系统停止 |
CUEA_ABORT |
错误发生时系统应退出(EXIT) |