4.5 设置当前活动测试包和测试用例

  CU_ErrorCode CU_set_suite_active(CU_pSuite pSuite, CU_BOOL fNewActive)

  CU_ErrorCode CU_set_test_active(CU_pTest pTest, CU_BOOL fNewActive)

  这些函数被用来测试包测试用例为当前活动包和当前活动测试用例,一个测试包或者测试用例在执行测试时不会被执行,除非用户将它设置为是当前活动的。所有的测试包和测试用例在创建时被默认设置为活动的。当前活动状态可以通过pSuite->fActive或pTest->fActive获取。这样,客户端有能力动态地选择测试用例去执行测试。如果参数对应的包或者用例不存在则返回CUE_NOSUIT或CUI_NOTEST。

  4.6 修改测试包和测试用例的属性

CU_ErrorCode CU_set_suite_name(CU_pSuite pSuite, const char *strNewName)
CU_ErrorCode CU_set_test_name(CU_pTest pTest, 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_func(CU_pTest pTest, CU_TestFunc pNewFunc)

  4.7 测试包和测试用例的查询

  大多数情况下,客户端可以通过注册测试包和关联测试用例获取它们的引用。有时候客户端可能需要有能力去检索某个测试包或测试用例的引用。CUnit提供给客户端获取某个测试包或测试用例信息的能力。

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)

  这些函数使用户查询注册到当前活动注册簿中的测试包。可以通过传入名字、位置参数来获取测试包,如果该测试包不存在,则返回NULL。位置参数从1开始到注册簿中的测试包数。按名字查询的方式只返回测试包链表中的第一个测试包。如果注册簿没有初始化则错误码为CUE_NOREGISTRY,相应的,如果按名字查找的包不存在,错误码为CUE_NO_SUITENAME且返回NULL。

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)

  如上函数和测试包查询类似。

  5. 运行测试

  5.1 常用相关函数

#include <CUnit/Automated.h>
void         CU_automated_run_tests(void)
CU_ErrorCode CU_list_tests_to_file(void)
void         CU_set_output_filename(const char* szFilenameRoot)
#include <CUnit/Basic.h>
typedef enum     CU_BasicRunMode
CU_ErrorCode     CU_basic_run_tests(void)
CU_ErrorCode     CU_basic_run_suite(CU_pSuite pSuite)
CU_ErrorCode     CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest)
void             CU_basic_set_mode(CU_BasicRunMode mode)
CU_BasicRunMode CU_basic_get_mode(void)
void             CU_basic_show_failures(CU_pFailureRecord pFailure)
#include <CUnit/Console.h>
void CU_console_run_tests(void)
#include <CUnit/CUCurses.h>
void CU_curses_run_tests(void)
#include <CUnit/TestRun.h>
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)
typedef struct CU_RunSummary
typedef CU_Runsummary* CU_pRunSummary
const CU_pRunSummary CU_get_run_summary(void)
typedef struct CU_FailureRecord
typedef CU_FailureRecord*  CU_pFailureRecord
const CU_pFailureRecord CU_get_failure_list(void)
unsigned int CU_get_number_of_failure_records(void)
void CU_set_fail_on_inactive(CU_BOOL new_inactive)
CU_BOOL CU_get_fail_on_inactive(void)

  5.2 自动模式

  CUnit支持运行注册簿中所有的测试用例,它同时支持单独运行某个测试包或测试用例。 CUnit框架会在每个测试运行期间跟踪测试包、用例、断言以及断言通过和失败的数量。需要注意的是,每次测试初始化(即便是初始化失败)前次的测试结果都会被清空。,如果客户端想排除某些用例以做某个特殊测试,单个测试包或测试用例可以被设置为非活动。

  自动模式接口提供非交互模式测试,用户初始化测试并运行,结果被导出到一个XML文件,所有的测试注册簿和测试包均可以被导出到XML文件。自动模式接口包括如下函数:

  void CU_automated_run_tests(void) 该函数运行注册簿中所有活动的的测试包,测试结果被输出到一个名字为ROOT-Results的XML文件。ROOT可以通过 CU_set_output_filename()设置,否则使用默认文件名 CUnitAutomated-Results.xml。需要指出的是,如果不设置一个独特的名字,测试结果会被覆盖。

  CU_ErrorCode CU_list_tests_to_file(void) 该函数在文件中列出所有注册的测试包及相关联的测试用例。列表文件名为ROOT-Listing.XML。名字ROOT可以通过 CU_set_output_filename()设置,否则默认文件名CUnitAutomated便被启用,同样的,如果不区分名字,该列表文件将会被覆盖。需要指出的是,如果用户需要一个列表文件,他必须显示地去调用该接口函数。

  void CU_set_output_filename(const char* szFilenameRoot) 这个函数用于设置输出结果或列表文件的文件名,该参数后面会相应的追加-Results.xml或-Listing.xml。