在测试过程中,C++test 将根据所选的【测试配置的【执行】选项卡】中定义的参数执行生成的和用户定义的测试(或在启用了运行时覆盖率监视的情况下运行应用程序)
【执行】选项卡具有以下设置:
下表描述了可以为测试源,附加源和测试用例源启用/禁用的检测功能 :
C/C++ 代码覆盖率:确定是否跟踪覆盖率信息。包含的标头中的内联函数需要【测试用例源】(独立测试套件)的覆盖率检测。 C++test 从来不会检测测试用例函数的覆盖率。
堆栈跟踪报告:确定是否报告堆栈跟踪回调。如果禁用,报告的堆栈跟踪不会显示精确的正在执行的代码行,将遗漏非桩函数的函数调用。
访问私有成员: 确定在测试用例中是否使用私有成员(例如,调用私有函数、使用私有构造函数创建对象、在测试用例前置条件中设置私有字段、并在后置条件中检查私有字段的值)。
函数打桩:确定在单元测试中是否使用安全定义(由 C++test 提供)和用户定义的桩函数。
重命名 main() 函数: 确定是否测试包含 "main()”函数的代码。如果启用,C++test 将在检测期间重命名此函数。这是必要的,因为 C++test 提供了自己的 "main()”函数来执行测试用例。如果禁用此选项,并且被测代码包含 "main()”函数,则在测试可执行程序链接阶段,会因为重复定义 "main" 符号而出错。当您在“应用程序监测”模式下工作时,应禁用此模式。
内存监测:确定是否启用针对内存相关问题的运行时错误检测。
程序集代码覆盖率: 确定是否跟踪程序集覆盖率信息。请参见程序集代码覆盖率。
选择 优化覆盖率(仅应用程序监测) 选项以启用特殊的优化覆盖率模式,如下表所述:
选项 | 目的 |
---|---|
覆盖率检测>优化尺寸 | 优化了覆盖率检测用于存储度量指标数据的内存缓冲区,以占用尽可能少的 RAM。此模式适用于内存量有限的嵌入式设备。 |
覆盖率检测>优化速度 | 优化了代码覆盖率检测用于存储度量标准数据的内存缓冲区,以确保实现最低的执行时间。这种模式适合于测量对附加执行时间的低容忍的应用程序覆盖率。 |
启用数据一致性检查 | 此选项启用用于检测覆盖率缓冲区损坏的其他算法。如果被测应用程序中的错误行为可能导致覆盖率缓冲区损坏,请启用此选项。启用此选项会带来一些额外的执行时间开销。 |
启用覆盖率内存缓冲区的初始化 | 此选项强制执行代码覆盖率检测使用的内存缓冲区的初始化。如果您的编译器在程序开始运行之前未将全局变量和静态变量初始化为 0(ISO C 标准要求),则应选择此选项。如果同时启用了“优化尺寸”覆盖率检测模式和“启用数据一致性检查”,则此选项自动启用(并且不能取消启用)。 |
启用枚举数据自动生成: 确定是否收集与枚举相关的 API 宏所需的枚举数据(有关详细信息,请参见处理枚举值)。
当您运行测试配置集以执行测试时,C++test 会执行一系列操作,这些操作通常会导致将单元测试结果加载到 C++test UI 中。这些操作在测试流程文件中定义,该文件以 XML 格式存储并保存为【测试配置】的一部分,从而可以在团队中共享它。 C++test 提供了一个默认执行流程,该流程专门为基于主机的测试而设计。 C++test 还允许您定义自定义测试流程,该流程可以包括 C++test 内部操作或作为操作系统中的进程启动的外部实用程序。可以通过以下方式修改默认测试流程: • 自定义现有步骤的参数 - 参见 自定义测试执行流 • 删除现有步骤 • 添加新步骤 定义自定义测试流程: 1。通过选择Parasoft> 测试配置,打开【测试配置】面板。 2。选择您计划用于测试执行的【测试配置】。 3。打开 执行> 常规 选项卡。 4。点击 编辑 按钮 5。输入修改后的测试流程或改编现有的测试流程 • 如果要调整现有的测试流程,请从 可用的内建测试执行流程 框中选择该测试流程,然后单击 恢复。然后将显示该测试流程的 XML,并可以根据需要进行编辑。 6。单击 OK 以保存修改的文件。 |
执行细节>快速执行模式:配置 C++test 不太严格地验证是否测试可执行副产品是最新的 (例如,是否自上次运行之后已经更改 )。
“快速执行模式 (Quick execution mode)” 可以用于减少准备测试可执行文件所需要的时间。由于 C++test 将会不太严格地验证是否测试可执行副产品是最新的,测试准备阶段更快。 在这种模式中, C++test 假定自从上次运行之后以下部分没有被修改: • 编译器和链接器选项。 • 头文件。 • 桩函数配置。 我们建议如下所示使用快速执行模式: 1。通过复制一个 "正常" 模式的测试配置来创建一个 "快速" 执行测试配置,然后启用 快 速执行模式 复选框。 2。如下所示使用两个测试配置: • 当在服务器计算机上运行测试时 ( 夜间测试 ),使用 " 正常 " 测试配置。 • 当在开发人员的计算机上运行测试时 ( 日常工作 ),使用 " 快速 " 测试置。 当以下情时,在开发人员的计算机上需要正常执行模式: • 在项目中的编译器 / 链接器标志已经更改 ( 例如,一个新的宏定义被添加到编译器选项或一 个新的外部库被添加到链接器的标志列表中)。 • 由测试源码 / 测试套件源码 / 桩函数所包含的一个头文件已经被修改。 • 一个新的用户桩函数被添加到项目中。 • 一个桩函数的定义已经从项目中删除。 • 需要报告覆盖率数据。 在您使用 " 正常 " 配置来重新构建测试可执行文件之后,您可以返回到 " 快速 " 模式。 |
${test_ext} - 测试套件文件特定于 C++test 的扩展名 (.cpp)
• ${project_loc} - 到 Eclipse 项目位置的路径 ( 此位置含 .project 文件 )。如果您的项目有 " 链接的 (linked)" 源文件夹,不要使用变量 — 源文件实际上并不在你的项目位置中。• ${resource_loc} - 到具体项目资源的路径。例如,${resource_loc:/MyProject/
linked_src_dir/source.cpp} 会被解析到 C:\src\source.cpp。如果您的项目有 "链接
的 " 源文件夹,您可以使用这个变量 — 源文件实际上并不在您的项目位置中。示例:如果您的项目有 " 链接的 (linked)" 源文件夹,不要使用变量 — 源文件实际上并不在你的项目位置中。
测试套件必须可从项目的树状图中获取。
指定 C++test 如何创建原始符号定义列表(例如,为函数或全局变量),这些原始符号定义应在准备测试可执行文件时可用(例如,在外部库中)。
${Project_loc}
解析为路径Eclipse项目位置(包含 .project
文件的位置)。如果您的项目有 "链接
的 " 源文件夹,您无法使用这个变量 — 源文件实际上并不在您的项目位置中。
${Project_loc}
解析为特定项目资源的路径。例如, ${resource_loc:/MyProject/linked_src_dir/source.cpp}
将解析为 C:\src\source.cpp
。
${project_loc}/src/core/*
)如果在符号/桩函数分析期间检测到任何丢失的符号,此选项确定 C++test 是否中止单元测试执行。如果报告了未解析的符号,请参见解决来自未解析符号的链接器错误以获取有关如何解析它们的提示。
使用配置在 Eclipse IDE 中直接调试:确定 C++test 是否直接在 Eclipse IDE 中使用调试器运行测试 (根据您已配置的 Eclipse 调试配置)。如果启用此选项,您必须还指定想要使用的 Eclipse 调试配置。
报告单元测试的详细情况:确定是否应该报告从已测试单元测试提供的单元测试执行详细信息。这包括从 CPPTEST_REPORT 宏中报告的值。
- 包括任务细节: 确定是否应该在测试用例执行详细信息中包括报告的任
务 ( 例如,异常、失败的断言、结果 )。
- 包括通过的断言详细信息:确定是否检查的和通过的断言应该被包含在测试用例执行详细信息中。