本主题说明了如何访问和探索 C++test 的自动生成的测试用例。

在本章节中:

访问测试用例

自动生成的测试用例保存在测试套件文件中。使用默认设置,C++test 为每个测试文件生成一个测试套件。它还可以被配置为为每个功能生成一个测试套件(有关详细信息,请查阅 测试套件选项卡 )。

要查看生成的测试用例:

  1. 在项目树中,找到 C++test 生成的测试套件文件。
    • 默认情况下,自动生成的测试类保存在所测试项目的 tests/autogenerated 目录中。
    • 要检查或修改 C++test 测试套件文件保存的位置,请打开【测试配置】对话框,选择用于生成测试的测试运行的【测试配置】,然后查看 生成> 测试套件 选项卡的 测试套件输出文件和布局 字段(有关详细信息请查阅 测试套件选项卡 )。
  2. 双击表示生成的测试类的项目树节点。生成的测试类文件将在编辑器中打开。

了解测试用例

测试套件包含使用以下架构的测试用例:

  • 测试套件 是一种用于测试用例的框架。它有助于对测试用例进行分组。每个测试套件都有一个类定义,该类定义派生自 CppTest_TestSuite 类,测试用例声明和测试用例函数的定义。
    • 为 C++ 函数或类方法生成的测试套件采用类的形式,并且测试用例是该类的公共方法。如果被测方法是类成员,那么测试套件类就成为被测试方法所在的类的朋友。这种关联非常强大,因为它提供了从测试用例内部控制测试类的私有成员的能力。
    • C 代码的测试套件仅用作声明全局函数的容器(文件)。
  • 测试用例 是测试套件类的公共方法或全局函数(取决于它是为 C 还是 C++ 生成的),它包含三个部分:
    • Arguments/Pre 条件分配:
    • 经过测试的函数调用。
    • Results/Post 条件验证。C++test 定义了一组用于控制和验证结果的宏。这些宏可用于将消息/断言从测试可执行文件传递到 C++test GUI。可用的宏在 C/C++test API 文档位置列出。

如果稍后将更多的功能添加到待测试文件中,那么测试生成将在更新后的文件上运行,额外的测试用例将添加到原始的测试套件文件中。

上下文和包含宏

每个测试套件都以以下两个宏开始:

  • CPPTEST_CONTEXT: 指定测试套件测试哪个文件。只能指定一个源文件。如果未指定上下文,则在执行项目时将执行测试套件。
    • 在开始执行测试之前,在项目树中选择了源文件或目录时,C++test 会扫描【测试配置】的测试搜索路径中指定的所有测试目录。所有匹配所选上下文的测试套件都将被执行。
    • 如果选择了整个项目,则将执行测试路径上的所有测试套件。
    • 如果选择了一个测试套件或单个测试,则使用 CONTEXT 宏回溯到与此测试套件相关的源文件。仅执行所选的测试套件。
  • CPPTEST_TEST_SUITE_INCLUDED_TO: 表示它是包含的测试套件,并指定在生成测试可执行文件时将包含测试套件源的文件。如果要包括其他文件,请使用 #include 指令。

这两个宏指定的文件应始终与被测文件的名称匹配。如果待测试文件的名称更改,则必须相应地修改这些宏的值。

这两个宏都可以使用相对路径。相对路径必须以“ ./”或“ ../”开头。

后置条件宏

以下后置条件宏用于报告测试执行期间变量或类成员所具有的值:

  • CPPTEST_POST_CONDITION_BOOL(value_string, value)
  • CPPTEST_POST_CONDITION_INTEGER(value_string, value)
  • CPPTEST_POST_CONDITION_UINTEGER(value_string, value)
  • CPPTEST_POST_CONDITION_FLOAT(value_string, value)
  • CPPTEST_POST_CONDITION_CSTR(value_string, value)
  • CPPTEST_POST_CONDITION_CSTR_N(value_string, value, max_size)
  • CPPTEST_POST_CONDITION_MEM_BUFFER(value_string, value, size)
  • CPPTEST_POST_CONDITION_PTR(value_string, value)

这些宏的结果(报告的所有断言值)都显示在【质量任务】视图中。任何带有报告后置条件的测试用例都可以在回归测试中自动验证。验证将后置条件宏更改为断言,如果后续测试没有生成预期的(经过验证的)值,则断言将失败。这对于自动生成遗留代码的回归基础特别有用。有关验证的详细信息,请查阅 验证测试用例以进行回归测试

其他宏

验证后置条件时,将断言宏添加到测试用例。

此外,可以根据您的测试需求手动添加其他宏。

有关可以在测试用例中使用的宏的列表,请查阅 C/C++test API 文档

测试功能

自动生成的测试用例有时包含特殊功能(例如,用于访问最大值的最小值)。

为了使用不同的数值生成测试用例,C++test 运行时库包含一组函数,这些函数返回整数和浮点类型的最小/最大值。下表描述了这些函数。所有列出的功能都可以在用户定义的测试用例中使用。

功能目的
char cpptestLimitsGetMaxChar(void);返回 char 类型的最大值。
char cpptestLimitsGetMinChar(void);返回 char 类型的最小值。
signed char cpptestLimitsGetMaxSigned Char(void);返回 char 类型的最小值。
signed char cpptestLimitsGetMinSigned Char(void);返回带符号 char 类型的最小值。
unsigned char cpptestLimitsGetMaxUnsigned Char(void);返回不带符号 char 类型的最大值。
short cpptestLimitsGetMaxShort(void);返回 short 类型的最大值。
short cpptestLimitsGetMinShort(void);返回 short 类型的最小值。
unsigned short cpptestLimitsGetMax UnsignedShort(void);返回不带符号 short 类型的最大值。
int cpptestLimitsGetMaxInt(void);返回 int 类型的最大值。
int cpptestLimitsGetMinInt(void);返回 int 类型的最小值。
unsigned int cpptestLimitsGetMaxUnsigned Int(void);返回不带符号 int 类型的最大值。
long cpptestLimitsGetMaxLong(void);返回 long 类型的最大值。
long cpptestLimitsGetMinLong(void);返回 long 类型的最小值。
unsigned long cpptestLimitsGetMaxUnsigned Long(void);返回不带符号 long 类型的最大值。
float cpptestLimitsGetMaxPosFloat(void);返回 float 类型的最大值。
float cpptestLimitsGetMinNegFloat(void);返回 float 类型的最小值。
float cpptestLimitsGetMaxNegFloat(void);返回 float 类型的最大负值。
float cpptestLimitsGetMinPosFloat(void);返回 float 类型的最小正值。
double cpptestLimitsGetMaxPosDouble(void);返回 double 类型的最大正值。
double cpptestLimitsGetMinNegDouble(void);返回 double 类型的最小负值。
double cpptestLimitsGetMaxNegDouble(void);返回 double 类型的最大负值。
double cpptestLimitsGetMinPosDouble(void);返回 double 类型的最小正值。
long double cpptestLimitsGetMaxPosLong Double(void);返回 long double 类型的最大正值。
long double cpptestLimitsGetMinNegLong Double(void);返回 long double 类型的最小负值。
long double cpptestLimitsGetMaxNegLong Double(void);返回 long double 类型的最大负值。
long double cpptestLimitsGetMinPosLongDou-ble(void);返回 long double 类型的最大正值。

了解自动生成的存根

请查阅 了解和自定义自动生成的存根

  • No labels