1. 首页
  2. 教程
  3. 软件测试
  4. 单元测试
  5. CUnit教程

CUnit用户手册(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)

<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> (included automatically by <CUnit/CUnit.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)

 

 

5.2 CUnit执行测试

CUnit支持运行注册在所有测试套中的所有测试用例,同时也可以单独地运行测试套或测试用例。在每次运行时,测试框架会跟踪记录运行的测试套、测试用例和运行通过或失败的断言数。注意,这些结果会在每次测试运行开始(即使它失败)时被清零。

Cunit提供原函数运行测试套和测试用例,大多数用户将要使用到其中一个简化的用户界面。这些接口处理与框架的间的相互关系的细节工作并为用户提供输出测试的细节和结果。

下列接口包括在CUnit库:

Interface Platform Description
Automated all 非交互式输出到xml文件
Basic all 非交互式的可选输出到标准输出(stdout)。
Console all 在用户控制下的交互式控制台方式。
Curses Linux/Unix 在用户控制下的互动curses(诅咒)模式

如果这些接口仍满足需要,客户端也可以使用在<CUnit/TestRun.h>文件中定义框架的原始API。请参阅例如,如何与原始API直接交互的源代码的各种接口。

 

5.3自动模式

自动化接口是非交互式的。客户端启动试运行,并输出结果是一个XML文件。注册测试和测试套的列表同时也可以打印报告到XML文件中。

下面的功能包括自动化接口(API):

 

void CU_automated_run_tests(void)

运行所有已注册的(且为激活的)测试套的所有测试用例。测试结果输出到一个文件名为ROOT-Results.xml.的文件中。可以使用CU_set_output_filename()设置文件名ROOT,否则使用默认文件名为CUnitAutomated-Results.xml。需要注意的是,如果一个局部的ROOT文件名在每次运行前没有设置,结果文件将被覆盖。

结果文件支持文件类型定义的文件(CUnit Run.dtd)和XSL样式表(CUnit Run.xsl)。这些在源码和安装路径的共享子目录中有提供。

 

CU_ErrorCode CU_list_tests_to_file(void)

列举已注册的测试套和相关的测试用例到文件。该列表文件被命名为ROOT-Listing.xml。可以使用CU_set_output_filename()设置文件名ROOT,否则使用默认CUnitAutomated-Results.xml。需要注意的是,如果一个局部的ROOT文件名在每次运行前没有设置,结果文件将被覆盖。

结果文件支持文件类型定义的文件(CUnit-Run.dtd)和XSL样式表(CUnit-Run.xsl)。这些在源码和安装路径的共享子目录中有提供。

还要注意的是列表文件不是由调用CU_automated_run_tests()自动生成的。当用户需要列表信息时,客户端代码必须调用该接口作出明确的要求。

 

void CU_set_output_filename(const char* szFilenameRoot)

设置输出的测试结果及列表文件的文件名。szFilenameRoot被用来构造文件名,分别通过附加-Results.xml和-Listing.xml。

 

5.4基本模式

基本界面也是非交互式的,结果输出到标准输出(stdout)。此接口支持运行单独的套房或测试,并允许客户端代码来控制每次运行过程中显示的输出类型。此接口为希望简化访问CUnit的API的客户提供了最大的灵活性。

提供以下公共函数:

 

CU_ErrorCode CU_basic_run_tests(void)

运行所有已注册的测试套中的所有测试用例。返回试运行期间发生的第一个错误代码。输出类型由当前的运行模式控制,该模式可以使用CU_basic_set_mode()进行设置。

 

CU_ErrorCode CU_basic_run_suite(CU_pSuite pSuite)

运行指定的单一测试套中的所有测试用例。返回试运行期间发生的第一个错误代码。输出类型由当前的运行模式控制,该模式可以使用CU_basic_set_mode()进行设置。

 

CU_ErrorCode CU_basic_run_test(CU_pSuite pSuite, CU_pTest pTest)

运行指定的测试套中的单一测试用例。返回试运行期间发生的第一个错误代码。输出类型由当前的运行模式控制,该模式可以使用CU_basic_set_mode()进行设置。

 

void CU_basic_set_mode(CU_BasicRunMode mode)

设置的基本运行模式,该模式在测试运行期间控制输出。模块选择如下:

CU_BRM_NORMAL 打印故障和运行结果。
CU_BRM_SILENT 除错误消息外不打印输出.
CU_BRM_VERBOSE 最大程度地输出运行的详细信息。

 

CU_BasicRunMode CU_basic_get_mode(void)

检索当前的基本运行模式的代码。

 

void CU_basic_show_failures(CU_pFailureRecord pFailure)

将所有失败汇总打印到stdout。不依赖于运行模式。

 

5.5交互式控制台模式

控制台界面是交互式的。所有的客户端需要做的是启动控制台会话,并且用户以交互方式运行控制测试。这些操作包括选择和运行注册的测试套和测试用例,并查看测试结果。要启动控制台会话,使用

void CU_console_run_tests(void)

5.6交互式curses模式

curses界面是交互式的。所有的客户端需要做的是启动的curses会话和用户交互方式运行控制测试。这些操作包括选择和运行注册的测试套和测试用例,并查看测试结果。使用这个接口需要连接到应用程序中的ncurses库。要启动curses会话,使用

void CU_curses_run_tests(void)

5.7获得测试结果

以上的一些接口都会显示测试运行的结果,但有时客户端的代码可能需要直接访问结果。这些结果包括各种运行计数,以及作为的失败记录保持的故障的详细信息的链接列表。注意:测试结果是覆盖每次一个新的测试运行开始时,或者当注册表被初始化或清理的时候。

访问测试结果的函数如下:

 

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)

 

这些函数报告在上一次运行时的测试套数测试用例数和运行的或失败的断言数目。如果一个测试套的初始化或清理函数返回非NULL,则该测试套被认为是失败。一个测试用例中任何一个断言失败则认为这个测试用例是失败。最后的3个函数返回的是对应情况的断言数目。

要检索的注册的测试套和测试用例的总数,可以分别使用CU_get_registry() – > uiNumberOfSuites和CU_get_registry() – > uiNumberOfTests实现。

 

const CU_pRunSummary CU_get_run_summary(void)

一次检索所有测试计数结果。返回值是一个指向包含计数结果值的存储结构的指针。此数据类型的定义在<CUnit/TestRun.h>(自动包含于<CUnit/CUnit.h>):

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表示无失败)。返回值的数据类型在<CUnit/TestRun.h>文件(自动包含于<CUnit/CUnit.h>文件中)中有定义。每个失败记录包含的信息包括失败位置和失败性质:

 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_FailureRecords结点的个数。请注意,这个数值可能比失败的断言数量多,因为测试套的初始化和清除的失败也计算在内。

 

5.8已过时V1数据的类型和功能

下面的数据类型和函数不建议在第2版使用。要使用这些过时的名称,用户代码必须用USE_DEPRECATED_CUNIT_NAMES进行编译定义。

不建议使用的函数名 等价的新函数名
automated_run_tests() CU_automated_run_tests() plus
CU_list_tests_to_file()
set_output_filename() CU_set_output_filename()
console_run_tests() CU_console_run_tests()
curses_run_tests() CU_curses_run_tests()

原创文章,作者:若木成林,如若转载,请注明出处:https://www.chinaztest.com/2535.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:983512074@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息