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