const CU_pRunSummary CU_get_run_summary(void) 检索所有测试结果的统计数字。返回值指向一个包括各种统计数字的结构体:
typedef struct CU_RunSummary { unsigned int nSuitesRun; unsigned int nSuitesFailed; unsigned int nTestsRun; unsigned int nTestsFailed; unsigned int nAsserts; unsigned int nAssertsFailed; unsigned int nFailureRecords; } CU_RunSummary; typedef CU_Runsummary* CU_pRunSummary; |
该返回值由框架统一管理,用户不能释放或修改。需要注意的是,如果另一个测试被初始化,该指针可能为无效指针。
const CU_pFailureRecord CU_get_failure_list(void) 检索最后一次测试结果的错误记录链表,如果没有错误该值为NULL。该结构体定义如下:
typedef struct CU_FailureRecord { unsigned int uiLineNumber; char* strFileName; char* strCondition; CU_pTest pTest; CU_pSuite pSuite; struct CU_FailureRecord* pNext; struct CU_FailureRecord* pPrev; } CU_FailureRecord; typedef CU_FailureRecord* CU_pFailureRecord; |
同样的,该指针由测试框架统一管理。
unsigned int CU_get_number_of_failure_records(void) 获取CU_get_failure_list()返回链表中CU_FailureRecord的数量。需要注意的是,该值可以比断言失败数量大,因为初始化或清理失败的测试包被包括在内。
6. 错误处理
6.1 常用相关函数
#include <CUnit/CUError.h> typedef enum CU_ErrorCode CU_ErrorCode CU_get_error(void); const char* CU_get_error_msg(void); typedef enum CU_ErrorAction void CU_set_error_action(CU_ErrorAction action); CU_ErrorAction CU_get_error_action(void); |
6.2 错误处理
在CUnit中,多数函数通过设置错误码来指示错误状态。一些函数直接返回错误码,另外一些只设置错误码并返回其他的值。CUnit提供下面两个函数用以检查错误状态:
CU_ErrorCode CU_get_error(void)
const char* CU_get_error_msg(void)
第一个函数返回错误代码,第二个函数返回一个描述错误状态的字符串信息。错误码被定义在<CUnit/CUError.h>,定义了如下:
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_SUITE_INACTIVE A test run was requested for an inactive suite. CUE_NOTEST A required CU_pTest of CU_TestFunc 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_TEST_INACTIVE A test run was requested for an inactive test. 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 |