提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:郑恭琳|2020-05-18 16:47:06.160|阅读 938 次
概述:C/C++test 2020.1的更新引入了将C/C++test与CMake集成在一起以进行静态分析和单元测试的功能。这篇文章重点介绍如何在基于CMake的项目中使用Parasoft C/C++test进行单元测试。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
C/C++test 2020.1的更新引入了将C/C++test与CMake集成在一起以进行静态分析和单元测试的功能。这篇文章重点介绍如何在基于CMake的项目中使用Parasoft C/C++test进行单元测试。(查看结合使用Parasoft C/C++test和CMake进行静态分析)
单元测试要集成到开发过程中要比静态分析要复杂得多。最后,必须创建可执行二进制文件。对于由多个库和可执行文件组成的大型项目而言,这尤其成问题。
我们用于静态分析的compile-info JSON文件还不够。它没有提供有关项目结构的重要信息-哪些文件包含在哪些二进制文件中,以及哪些文件应一起进行测试。
将单元测试集成到基于Cmake的项目中
为了使Parasoft C/C++test单元测试轻松集成到基于CMake的项目中,2020.1版本引入了CMake扩展,该扩展允许定义C/C++test的单元测试目标。这些目标会自动生成C/C++test项目文件,这些文件可用于创建,运行和维护单元测试。
此扩展旨在使用户能够定义Parasoft C/C++test单元测试所需的整个基础架构,以及其在CMake配置文件中的常规目标。
让我们使用一个基于C/C++test Professional的示例(基于Eclipse的工具)来查看其工作原理,该工具具有丰富的UI。:
按照这些步骤
在C/C++test Professional的主安装目录中,您可以找到带有示例的CMake扩展。请参阅以下目录:
对于我们的实验,我建议将integration/cmake文件夹从安装中复制到您的首选位置。该示例的结构如下所示:
app文件夹包含“可执行”目标。具有三个子文件夹(mod1,mod2和mod3)的modules文件夹表示用于链接可执行文件的静态库。另外,cmake文件夹包含CMake的C/C++test扩展。您可能需要将此文件夹复制到实际项目中才能使用此扩展名。
这种简化的结构描绘了团队尝试实施单元测试工作时面临的典型挑战:如何将整个项目分为可测试的块,代表逻辑上属于同一组的文件。
在大多数情况下,开发人员将不希望针对通过编译整个项目中的所有文件而创建的一个Blob二进制文件执行单元测试。用户很可能会对在项目中定义的相同二进制目标(可执行文件和库)添加测试用例感兴趣。
如何为项目中定义的相同二进制目标添加测试用例
在讨论配置语法的详细信息之前,让我们使用提供的示例了解其工作方式。
1.在app文件夹所在的顶级目录中,创建一个构建目录,cd进入该目录,并调用生成脚本,如下所示:
2.使用生成脚本(makefile)生成CMake之后,调用make生成示例项目:
3.启动C/C++test专业版(安装文件夹中的cpptest可执行文件)。选择一个空的工作区,使用“文件菜单->导入...->现有项目到工作区”,然后选择“根目录”作为复制示例的主文件夹。向导将递归扫描选定的文件夹,并找到所有自动生成的项目。如果您看到类似下面的内容,则可以单击“完成”。
Eclipse将导入所有项目,您将拥有一个新的工作区,可以进行单元测试。您无需执行任何其他操作即可开始添加和运行测试用例,并努力提高代码覆盖率。
4.在项目导航器中,选择所有三个项目,右键单击并使用“Parasoft-> Test Using->内置->单元测试->生成单元测试”测试配置自动生成测试用例。生成测试后,请从同一位置执行“运行单元测试”配置。
通过这四个简单的步骤,您就为单元测试准备了项目基础结构。现在,团队已准备好开始处理测试用例。
它是如何工作的?
除了常规的构建目标外,CMakeLists.txt文件还包含单元测试目标。当使用cmake生成构建脚本时,也会自动生成C/C++test项目文件。稍后在构建过程中,会自动生成C/C++test项目所需的其他构建数据文件。
定义单元测试项目的结构所需的所有内容都保存在CMakeLists.txt文件中。该团队不需要维护任何其他配置文件。一切都很好,干净。可以检出项目,生成脚本和C/C++test项目,可以将测试与源代码一起添加和检入,并且可以在CI中执行完整的测试。
近距离观察
让我们仔细看看C/C++test CMake扩展,以及它如何帮助定义测试项目基础架构。 打开modules/mod1/CMakeLists.txt文件。您应该看到类似以下的内容:
在前六行中,您可以看到常规目标定义。在这里,我们定义了一个简单的库目标,其中包含一个源文件mod1.cpp和include文件目录。 这就是您通常在CMake项目中看到的内容。
在第11行中,我们有了C/C++test扩展提供的新CMake函数。此功能允许您定义单元测试目标,该目标将生成所有必需的C/C++test项目文件。您可以在integrations/cmake/README.md中找到此功能的完整说明。在此特定示例中,完成以下操作:
这个简单的目标定义足以为Parasoft C/C++test生成单元测试项目。项目文件将在CMakeLists.txt文件的位置生成,这可能是最方便的。如果愿意,可以在源代码树之外生成项目文件,并避免任何合并问题。这显示在app/CMakeLists.txt中:
有关更多详细信息,请从
这是有关扩展的要点。
可以在以下目录的C/C++test专业版安装中找到CMake扩展:
要使用与C/C++test相关的扩展功能来启用CMake,您将需要使用以下命令在CMakeLists.txt文件结构中包括该扩展:
您可以根据需要定义单元测试目标(这会影响C/C++test项目)。您可以为可执行文件、库、库的组合或文件的任意集合添加单元测试项目。
您需要确保所有必需的头文件和库都包含在目标定义中。CMake的常规规则在这里适用。如果包含该库或选项,则在全局级别设置。然后它将被包含在您的单元测试目标中。如果您有任何特定于目标的设置,则需要添加它们。
如果要为现有二进制目标(如库或可执行文件)添加单元测试目标,建议的过程是复制对原始目标完成的所有设置。、注意:您可以将整个目标添加到cpptest_add_executable函数,该函数会将所有源文件复制到新目标。
如果您不介意在源文件目录中创建C/C++test项目文件,则这是最简单且建议的设置。如果您希望将项目文件放置在源代码树之外的某个位置,则可以轻松实现。
您无需检入生成的C/C++test项目文件(.project和.parasoft)。将为每个新版本重新创建它们。但是,您应该检入所有测试用例和存根。
(查看结合使用Parasoft C/C++test和CMake进行静态分析)
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢