除了行业标准的 C/C++ 代码覆盖率指标之外,C/C++test 可以在程序集级别收集代码覆盖率(也称为对象代码覆盖率),从而可以查看测试执行过程中覆盖了程序集代码的哪些部分,以及有关分支点执行的详细信息。
与 C/C++ 代码覆盖率不同,程序集覆盖率结果未与 C/C++test 视图集成。报告可以作为外部 HTML、XML 或 CSV 文件使用。有关更多详细信息,请参见生成程序集覆盖率报告。
本节提供有关在您的 IDE 中收集对象代码覆盖率的信息。 有关用于在程序集级别收集覆盖率的 Parasoft 工具的详细信息,请参阅 <INSTALL_DIR>/bin/engine/asmtool/manuals
中随 C/C++test 一起提供的 Parasoft ASMtools 文档。
以下 GHS 编译器支持程序集代码覆盖率:
C/C++test 已预先配置为从 Green Hills Software PPC 模拟器收集程序集级覆盖率数据。 如果要从目标测试执行中收集对象覆盖率数据,请联系 Parasoft 支持以获取更多信息。
以下用于 x86(32位)的 GNU GCC 编译器支持汇编代码覆盖率:
1不推荐使用此编译器,并将在未来版本中删除。
假设您的项目已配置为使用 C/C++test 进行单元测试执行或应用程序内存监控,并针对受支持的编译器进行设置 (请参阅 Supported Compilers),则不需要其他配置步骤。
您可以从程序集覆盖率报告中排除测试工具初始值设定项(由 C/C++test 添加)。转到 项目属性> Parasoft> C/C++test> 构建设置> 编译器选项并添加以下选项:
-DCPPTEST_USE_GLOBAL_OBJECTS_TO_INIT_RUNTIME=0 |
这将禁止将测试工具初始值设定项添加到被测编译单元。相反,C/C++test 将生成一个单独的“测试运行器”来执行测试工具初始化。
C/C++test 附带内置测试配置,用于执行带有程序集覆盖率监控的单元测试用例。 查看测试配置设置:
当您运行测试配置时,覆盖率数据存储在测试程序的内存缓冲区中。当计划的测试被执行并且测试可执行文件退出时,收集的覆盖率信息通过定义的通信通道保存(通常直接保存到文件)。
如果测试可执行文件崩溃或内存损坏,则存储覆盖数据的缓冲区可能会损坏或无法保存。出于这个原因,我们建议在执行之前检查测试用例,并从测试会话中排除所有可能导致应用程序崩溃的测试。
在测试执行后以测试配置中指定的格式生成程序集覆盖率报告(请参见Customizing Report Options)。在 C/C++test 的覆盖率视图、源代码编辑器或 C/C++test UI 的任何其他组件中没有可见的程序集覆盖率数据。
程序集覆盖率报告的链接将在主报告底部 附加报告 部分的 程序集覆盖率 列中提供:
HTML 报告链接包括在报告移动到另一个位置时不会中断的相对路径。 |
您可以通过修改将用于执行测试用例的测试配置来自定义程序集覆盖率报告的格式和编码 (请参阅 收集程序集代码)。转到 常规>测试执行流 并配置以下选项:
选项名称 | 值 |
---|---|
程序集覆盖率报告格式 | 可用格式: html、 xml、 txt、flattxt、csv 默认为 html。 |
程序集覆盖率报告编码 | 用于 html 报告的编码。 默认为 UTF-8 |
如果要从目标测试执行中收集对象覆盖率数据,请联系 Parasoft 支持以获取更多信息。