本主题说明如何使用 C++test 执行自动生成的和/或用户定义的 C++test 或旧版 CppUnit 测试用例。
内容包括:
C++test 可以运行并报告任何有效 C++test 或旧版 CppUnit 测试用例的覆盖率信息。
处理 GCC -nostdinc 选项 如果使用了 GCC
|
运行执行测试用例的一般过程是:
使用内置的“运行单元测试”测试配置或基于该测试配置的自定义测试配置来启动测试。
提示-从测试用例浏览器执行测试 您可以直接从【测试用例浏览器】(可以通过选择Parasoft> 显示视图> 测试用例浏览器打开)执行测试。只需为要测试的资源(项目、文件夹、测试套件或测试用例)选择【测试用例浏览器】节点,右键单击所选内容,然后从测试历史记录或使用测试快捷菜单中选择所需的测试执行测试配置。 所执行的测试将以颜色标记以指示其结果状态。测试失败将以红色标记。测试失败将以红色标记。 |
测试模板功能 C++test 对实例化的功能模板和类模板的实例化成员执行单元测试。 有关详细信息,请参见支持模板功能 。 |
要生成详细的覆盖率报告,请确保在运行测试用例之前,已在选定的测试配置中启用为[覆盖率度量指标]生成详细的覆盖率报告 选项。打开测试配置,跳转到 执行> 运行时 然后选择选项。 |
定期计划的批处理模式回归测试应仅执行内置的“运行单元测试”测试配置,或基于该测试配置的自定义测试配置。
示例:
cpptestcli -data /path/to/workspace -resource "ProjectToTest" -config team://ExecuteTests -publish
C++test 可以执行测试可执行文件的试用版,其中包括测试用例和用户桩函数,而无需执行测试。此功能可用于检查是否可以编译自动生成的桩函数和测试。即使已测试项目中还没有任何测试用例,您也可以执行试用版本。
推荐的执行试用版本的方法是运行内置的“构建测试可执行文件”测试配置。
当您运行内置的“生成桩函数”测试配置(或基于它的自定义测试配置)时,C++test 将自动为缺少的功能和变量定义生成可自定义的桩函数(或桩函数模板)。如Executing Test Cases中所述,我们建议您在执行测试用例执行之前先生成测试用例,然后运行【生成桩函数测试配置】,然后运行【构建测试可执行的测试配置】。
当使用【测试配置】集运行测试以生成桩函数时,C++test 将在指定位置创建一个桩函数文件。如果 C++test 无法自动生成完整的桩函数定义,它将创建一个您可以自定义的桩函数模板(通过输入适当的 return 语句,添加 include 指令等)。完整桩函数之前,桩函数模板将保存在桩函数文件中。
仅当没有其他定义(用户桩函数或原始桩函数)可用时,才使用自动生成的桩函数。
可以按照以下添加和修改桩函数说明自定义自动生成的桩函数和桩函数模板。如果自定义桩函数或桩函数模板,则需要重新运行分析以提示 C++test 使用它们。
要创建自定义桩函数生成测试配置:
默认情况下,C++test 通过以下方式计算已测试文件(要测试的项目文件)和测试套件的列表:
如果您希望 C++test 使用任何其他项目源文件来解析测试文件中的原始定义,则可以在【测试配置】的使用其他项目文件中的符号选项中指定此选项(在执行> 符号 选项卡中可用)。 此外,您可以使用使用文件中 的多余符号选项来指定使用哪个桩函数,并使用为每个经过测试的上下文创建单独的测试可执行文件选项来指定您是否想要 C++test 为每个文件创建单独的测试可执行文件上下文(单个源/头文件或项目)。
有关如何指定要使用的其他项目文件和桩函数以及如何准备测试可执行文件的更多详细信息,请参见符号选项卡 。
在某些情况下,测试策略要求将单元测试应用于其他单独相关组件。C++test 允许您通过使用桩函数执行此类测试。
要单独测试单个文件(在不同的“测试台”上,包括自定义和自动桩函数):
在单独测试单个文件时,您可能希望使用对象和库文件过滤器来防止测试指定的库和对象。在【测试配置】的 忽略对象/库文件 字段中(在【执行】>【符号】选项卡中),您可以指定以分号分隔的命令行选项模式列表。仅忽略链接程序命令行中的选项。不过滤标准编译器库和实用程序随附的库进行。
您可以通过多种方式隔离测试功能。本节介绍了经常用于测试安全性至关重要的源代码的方法。这种测试的基本要求是,测试模块不应修改被测试的函数源代码。这是为了确保测试结果能够反映实际生产环境中的函数执行情况。这是为了确保测试结果能够反映实际生产环境中的函数执行情况。
为确保未检测到已测试的函数,应在测试配置中验证检测设置:
在【经过测试的来源】类别中,仅应启用以下功能:
下面几节将提供关于配置桩函数模式、每个测试套件配置管理桩函数以及单独测试功能的测试可执行配置的其他详细信息。
您必须启用桩函数检测并选择桩函数模式才能将函数桩函数用于测试的代码。启用桩函数检测激活桩函数引擎。选择桩函数模式定义了桩函数调用的应用方式。有两种可用的桩函数模式:
以下示例说明了这些模式在桩函数函数或方法的调用方式上有何不同。
/* Original definition of function to be stubbed */ int Func(void) { // Function body } /* tested function definition */ int testedFunction(void) { int val = Func (); /* tested function body */ return val; } |
下表显示了两种桩函数模式的示例源代码的检测版本:
检测函数调用 | 检测桩函数函数 | ||
---|---|---|---|
|
|
在测试安全关键代码时,通常首选【检测桩函数函数】模式,因为它不会更改测试函数的主体。设置桩函数模式:
以这种方式配置检测设置会带来一些限制:
以下各节描述如何使用这些限制。
单元测试策略有时要求组织为每个测试套件使用不同的桩函数集。这可以通过针对每个测试套件的专用测试配置来完成,或者最好通过直接在测试套件中指定所需的桩函数文件来实现。
要为测试套件指定桩函数文件:
通过直接修改测试套件文件,也可以在不使用 GUI 的情况下,将特定于测试套件的桩函数文件添加到测试套件中。要将桩函数文件添加到测试套件,请在文本/代码编辑器中打开测试套件,并为每个桩函数文件插入以下宏。您还可以使用根目录路径来包含给定位置的所有桩函数。
CPPTEST_ADDITIONAL_STUB_FILES(<stub file path or root directory>); |
可以在任何有效的 C/C++ 宏位置中指定该宏,但是必须将其添加到 cpptest.h 头文件之后。在测试套件级别指定的所有桩函数文件都将附加到受测试配置设置影响的桩函数文件中。
要执行一组用户定义的测试用例:
选择相关的 项目树节点。(您可以从不同的测试套件中选择并执行测试用例。)
CDT 4.x 注释 测试函数在 CDT 4.x 创建的托管 C/C++ 项目的项目树中不可用。要执行单个测试用例,请在代码编辑器中选择测试用例名称。 |
如果被测代码引用了其他文件中的符号,则 C++test 可能报告链接器错误,但 C++test 找不到这些符号
则去查看哪些符号未解析:
C++test 将在编译和链接阶段之前报告未解析的符号(未定义的函数)。查看未解析的符号,您可以执行以下操作之一:
有几种解析符号的方法:
如果符号在外部库中,则将该库添加到链接器命令行中,然后重新运行测试。有关详细信息,请参见更新项目 。
请参见在测试执行期间使用调试器。