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