测试用例向导允许您选中某个函数并对其进行测试,然后图形化地指定测试用例的前置条件以及后置条件。这些测试用例可以根据数据源的值(或自动生成的值)进行参数化的设置以快速地创建能确保测试广泛性、覆盖率完整性以及测试广泛输入的代码及相应的测试用例场景。
在测试用例向导中创建的测试用例将以标准 C++test 测试格式 (类似 CppUnit)保存在源代码中。
添加测试套件
测试套件中必须包含所有的测试用例。在使用图形化的测试用例向导添加测试用例之前,您必须先创 建一个包含这些测试用例的测试套件。
生成一个测试套件
参照以下步骤用 C++test 为每个可测试的上下文(文件或函数)生成一组空的测试套件:
- 选择要为其生成测试套件的资源。
- 运行 “单元测试> 生成测试套件”测试配置或基于该测试配置的自定义团队测试配置。
- 必须将用于此目的的任何自定义测试配置设置为生成测试,并将 生成的测试用例(每个函数)的最大数量参数设置为零。
指定一个新建测试套件
如果您想要对测试套件的性质进行更多的自定义,而不是自动生成(如上所述),请参照如下步骤来添加新建测试套件:
- 在测试用例浏览器中,右键单击测试套件将测试的项目节点,然后在快捷菜单中选择 添加新建> 测试套件 。
- 默认情况下,测试用例浏览器在用户界面的左侧处于打开状态。如果不可用,可以通过选择 Parasoft> 显示视图> 测试用例浏览器打开它。关了解和浏览【测试用例浏览器】的详细信息,请参见探索 C++test 用户界面。
- 在【测试套件向导】对话框中输入测试套件参数。可用参数为:
- 测试套件名称: 确定测试套件的名称。
- 测试套件位置: 确定测试套件的位置。
- 测试套件文件: 报告测试套件文件的路径。
- 测试套件语言: 确定测试套件是用 C 还是 C++ 实现的。
- 已测试文件: 将测试套件上下文设置为指定的经过测试的源文件。指定的文件将被设置为 CPPTEST_CONTEXT 宏,该宏将给定的测试套件文件与指定的源文件相关联。
- 如果您启动向导时选择了文件,则将在此处指定该文件。
- 如果您启动向导时选择了一个项目,则不会指定任何上下文,并且测试套件将位于项目范围内(这意味着只有所有的测试运行时,它才能得到执行,或者它被选作测试文件)。当它被选作测试文件时 (并且没有语境)C++test 认为它有项目环境,并准备项目中所有的文件断开链接。
- 测试套件模型: 确定测试套件是否作为包含的测试套件、或单独的测试套件来执行。测试套件的两种 C++test 测量设备;它可以访问私有的/受保护的类成员。
- 包含的测试套件实际上包含在所生成的测试控制源文件之一。“包含的”测试套件与检测到的代码结合在一起,并被编译以形成单个目标文件。所有自动生成的测试套件包含在测试套件中。附加的头文件也被包含,宏定义可以指定在源头文件中。然而,包含的测试套件不需要任何头文件包含,除非最开始待测源文件中使用的类型不可见。 通常,只有在修改生成的测试(例如,包括测试工厂等)时才需要。
- 独立测试套件是单独编译的,并与可测试上下文的可执行文件链接。这些测试套件中必须直接包含任何附加的头文件。可为包含的头文件,跟踪覆盖率信息。
- 当在测试套件中引用测试文件时: 确定是否
CPPTEST_CONTEXT 和 CPPTEST_TEST_SUITE_INCLUDED_TO 宏使用全项目路径或相对路径。- 在大多数情况下,建议使用全路径。相对路径在特殊情况下可能有用,比如当想要为在不同位置使用的代码生成测试,并且您也打算在多个位置使用这些测试的时候。例如,假设您有一个可以在许多不同的项目中都能使用的库的源 文件,并且您有一些测试关联到这些源代码。在这种情况下,无论将这个源代码放在项目的何处,相关联的测试都应该能使用它 ( 因为没有使用全路径)。
使用图形化向导添加测试用例
您可以使用“测试用例向导”通过 GUI 控件以图形方式指定新建测试用例。C++test 将为特定的测试生成相应的测试用例代码,并且将这些代码添加到相应的测试套件中。这些测试用例将与其它测试用例一并执行,并且可以按需对其进行修改/扩展。
- 请参照如下步骤使用测试用例向导添加新建测试用例:
- 默认情况下,测试用例浏览器在用户界面的左侧处于打开状态。如果不可用,可以通过选择 Parasoft> 显示视图> 测试用例浏览器打开它。有关了解和浏览测试用例浏览器的详细信息,请参阅关于Parasoft测试界面。
- 右键单击选中的节点,然后在快捷菜单中选择 添加新建> 测试用例使用向导 。
- 在第一页上,指定要为其添加测试用例的源文件(编译单元)和功能,然后输入测试用例的名称。
- 仅当您的测试套件被配置为“独立”测试套件时,选择源文件的选项才可用。
- 如果测试套件被配置为“包含 ”,您只能从测试套件所包含的编译单元中选取相应函数。
- 如果测试套件指定了上下文文件,则您必须在给定的源/头文件中定义的函数中进行选择。
- 单击 下一步 打开下一个向导页面。
- 通过使用 GUI 控件指定测试用例的输入和预期输出值来配置测试用例。
- 有关详细信息,请参见测试用例配置技巧。
- 有关详细信息,请参见测试用例配置技巧。
- 单击 完成 以生成测试用例。新的测试用例将被添加到测试套件中,并且所生成的源代码将在编辑器中打开。
测试用例配置技巧
- 您可以对测试用例指定下述前置条件:
- 用以函数测试的参数
- 测试对象 ('this') 的值 (非静态成员函数)
- 测试函数所使用的全局变量的值
- 标准输入流的值(请参见 使用标准输入输出的数据)
- 此外,您还能指定下述预期后置条件:
- 测试函数的返回值
- 测试函数的参数值(非常量引用以及指针类型)
- 测试对象 ('this') 的状态 (非静态成员函数)
- 测试函数所使用的全局变量的值
- 标准输出/标准错误流的值 (请参见 使用标准输入输出的数据)
- 要为测试用例指定一个描述,请将其添加到 其他设置> 测试用例描述 字段中。它将同生成的测试用例一起保存。
- 要让 C++test 插入宏用于报告测试用例输入和输出值,请启用 其他设置 > 插入代码报告测试用例的输入和输出选项。
- 如需更改某个前置或后置条件的值,双击相应的条件并选择合适的初始化程序类型。
- 对于简单类型节点(布尔型、整形、单精度浮点型、字符串型),用户可以通过修改节点值来为其分配合适的值。
- 不需要初始化的值(例如,全局变量或标准输入流的值)可以通过选择“未初始化的值”或“实际值”来保持未初始化状态。
- 如需避免验证后置条件节点,请选择“ ANY”值。这样能防止 C++test 为任何给定输出生成宏断言。
- 对于每个简单类型后置条件节点 (布尔型、整形、单精度浮点型、字符串型)以及简单类型指针的后置条件 (如 char* 或 int*),用户可以通过为其设置 'ACTUAL' 值使 C++test 扫描其真实值。这将提示 C++test 生成后置条件宏,而不是针对结果测试用例中给定结果的断言。
- 要了解如何在测试案例中使用数据源值,请参见 使用数据源值对测试用例进行参数化。
- 如果 C++test 无法为给定的测试用例对象提供任何有效的初始化器(例如,创建对前向声明的类的引用),则相关的测试用例树节点将被标记为红色的 X 图标。该图标同样会标注表示该测试函数的各层父级节点直至顶层节点。在这种状态下生成测试用例将导致 C++test 创建不完整的测试用例,需要手动对其进行修改。