在测试期间,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.点击确定,保存修改的文件。 |
执行细节> 快速执行模式:配置 C++test,使其在验证测试可执行子产物是否处于最新状态(例如,自上次运行以来是否发生变化)方面要求更低。
“快速执行模式”可用于减少准备测试可执行文件所需的时间。由于 C++test 在验证测试可执行子产物是否处于最新状态时不那么严苛,因此测试可以更快准备完成。 在此模式下,C++test 假定自上次运行以来未修改以下内容: •编译器和链接器选项。 •头文件。 •桩函数配置。 我们建议通过以下方式使用快速执行模式: 1.复制“正常”模式的测试配置并启用快速执行模式复选框来创建“快速”执行测试配置。 2.两种测试配置的使用场景: •在服务器机器上运行测试(夜间测试)时,使用“正常”测试配置。 •在开发人员机器上运行测试时(日常工作),使用“快速”测试配置。 开发人员机器上需要使用正常执行模式的情况: •项目中的编译器/链接器标志已更改(例如,编译器选项中添加了新的宏定义,或者链接器标志列表中添加了新的外部库)。 •被测源/测试套件源/桩函数源包含的其中一个头文件被修改。 •项目中添加了一个新的用户桩函数。 •从项目中删除了桩函数定义。 •需报告覆盖率数据。 在使用“正常”配置重新构建测试可执行文件之后,您可以回到“快速”模式。 |
${test_ext} - 测试套件文件(.cpp)的 C++test 特定扩展名
项目树中必须有测试套件。
该部分详细说明 C++test 如何创建应在准备测试可执行文件提供(例如,在外部库中)的原始符号定义列表(例如,对于函数或全局变量)。
${project_loc}
解析为项目位置的路径
${resource_loc}
解析为特定项目资源的路径。
${project_loc}/src/core/*
)此选项控制如果在符号/桩函数分析期间检测到任何丢失的符号,C++test 是否中止单元测试执行。如果报告了未解析的符号,请参阅解决未解析符号的链接器错误获取解决相关问题的提示。
报告单元测试执行的详细情况:控制是否应从执行的测试用例报告单元测试执行的详细信息。其中包括从 CPPTEST_REPORT 宏报告的值。
- 包括任务细节:控制测试用例执行详细信息中是否应该包括报告的任务(例如,异常、失败的断言、结果)。
- 包括通过的断言细节:控制是否应在测试用例执行详细信息中包含已检查和已通过的断言。