没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:张莉|2025-10-13 11:59:02.340|阅读 13 次
概述:Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
目前,C++Test內建的单元测试分为两类
1、基于文件系统的测试结果收集
2、基于串口通讯的测试结果收集(串口通讯基于固件库)
在windriver环境中,其通常能够使用socket通讯方式回收结果,而目前的针对windriver的测试配置均为基于文件系统的,在某些没有文件系统的环境中无法进行测试。
让C++Test通过网口收集测试结果的流程:
生成socket通讯的运行时库
构建选项自动化生成运行时库
a) 构建选项->编译器设置,添加宏定义-D CPPTEST_USE_UNIX_SOCKET_COMMUNICATION指定C++Test使用socket通讯方式
其它支持的宏:
CPPTEST_USE_FILE_COMMUNICATIONS
CPPTEST_USE_FILE_SPLIT_COMMUNICATIONS
CPPTEST_USE_FILE_BUFFERED_COMMUNICATION
CPPTEST_USE_UNIX_SOCKET_COMMUNICATION
CPPTEST_USE_WIN_SOCKET_COMMUNICATION
CPPTEST_USE_RS232_WIN_COMMUNICATION
CPPTEST_USE_RS232_UNIX_COMMUNICATION
CPPTEST_USE_RS232_STM32F103ZE_COMMUNICATION
CPPTEST_USE_CUSTOM_COMMUNICATION
b) 修改测试执行流确保自动构建运行时库
<BuildRuntimeLibStep ignoreDbgOpts="true" autoBuildDefault="true" />
如果没有找到对应字段表明该字段为default值,default为true
手动编译运行时库
找到安装路径根目录下的engine\runtime 文件夹,拷贝一份为runtime_socket
打开makefile文件,修改CHANNEL_TYPE:=file 为 CHANNEL_TYPE:=unix-socket;修改TARGET_CFG:=gcc-static.mk 为 TARGET_CFG:=xxx.mk(对应编译器)
通过make构建运行时库,如果遇到报错请调试编译过程通常是由于头文件路径不正确导致,通过 -I 选项指定路径
修改构建设置,直接将手动编译生成的运行时库链接
修改编译器选项(非必须)
对于主机平台的编译器,C++Test內建提供了便已完成运行时库,并且该运行时库在编译器模板中直接添加到链接中,将导致上述配置无效,因此需要修改编译器配置文件。
选择对应编译器添加自定义编译器->修改gui.properties,找到link命令,删除其中的 -L、-l 选项对应字段或类似runtime.a字样,避免其直接链接內建的运行时库导致重定义或编码格式不匹配问题。
注意:该运行时库的实现是基于linux/unix标准系统库的,如嵌入式环境中系统库不同,需要定制运行时库来实现通讯。
修改测试执行流
添加ip、port属性
添加host、results_port、coverage_port属性用于配置C++Test地址,测试结果传输端口,覆盖率结果传输端口,uiEditable属性决定是否可以在界面中编辑
<SetProperty key="host" value="127.0.0.1" uiEditable="true" />
<SetProperty key="results_port" value="2567" uiEditable="true" />
<SetProperty key="coverage_port" value="2568" uiEditable="true" />
```

### 修改testrunner属性
使用TestRunnerWithSocketsGenerationStep代替TestRunnerGenerationStep,具体配置如下:
<TestRunnerWithSocketsGenerationStep
testSuiteConfigFile="${cpptest:testware_loc}/testsuites.xml"
testrunnerCFile="${cpptest:testware_loc}/cpptest_testrunner.c"
testrunnerCppFile="${cpptest:testware_loc}/cpptest_testrunner.cpp"
resultsHost="${cpptestproperty:host}"
testLogPort="${cpptestproperty:results_port}"
covLogPort="${cpptestproperty:coverage_port}"
/>
### 添加执行属性运行listener监听收集结果日志
ExecuteTestsExecution 属性为执行属性,因此本步骤及以下步骤的添加均为ExecuteTestsExecution的子属性。另外配置中所运用的均在安装路径根目录下的engine\runtime\listeners 中找到对应实现。
<CustomStep
id="run_socket_listeners"
label="Running Socket Listeners..."
commandLine=""java" -cp "${cpptest:cfg_dir}/../runtime_socket/listeners/socket_listener"
SocketListener –channel "${cpptestproperty:results_port}@${cpptest:testware_loc}/cpptest_results.tlog" --channel "${cpptestproperty:coverage_port}@${cpptest:testware_loc}/cpptest_results.clog"
-sf "${cpptest:testware_loc}/sync_file" -to 60"
workingDir="${cpptest:testware_loc}"
result="${cpptest:testware_loc}/cpptest_results.res"
runInBackground="true"/>
runInBackground="true" 设置该进程为后台运行,这将导致直接执行测试并结束测试,读取日志为空,需要通过Synchronize步骤来告诉C++Test测试还未结束等待获取结果
-to 为 timeout的简称用于设定超时时间
红字部分可能需要根据实际情况做更改
### 添加执行属性运行Synchronize执行测试
<CustomStep
id="run_synchronization"
label="Running Synchronization..."
commandLine=""java" -cp "${cpptest:cfg_dir}/../runtime_socket/listeners/socket_listener"
Synchronize -sf "${cpptest:testware_loc}/sync_file.init" -to 60"
workingDir="${cpptest:testware_loc}"
result="${cpptest:testware_loc}/cpptest_results.res"
runInBackground="false"/>
用于告诉C++Test可以进行下一步测试,并生成sync_file.init文件
### 添加测试运行属性run_test_exec
```
添加执行属性运行Synchronize 结果收集完成
id="run_synchronization"
label="Running Synchronization..."
commandLine=""java" -cp "${cpptest:cfg_dir}/../runtime_socket/listeners/socket_listener"
Synchronize -sf "${cpptest:testware_loc}/sync_file.final" -to 60"
workingDir="${cpptest:testware_loc}"
result="${cpptest:testware_loc}/cpptest_results.res"
runInBackground="false"
/>
生成sync_file.final文件,告诉listener已经同步结束,日志同步完成
这套配置流程,从修改通信宏定义、编译定制运行时库到调整测试执行流,展现了Parasoft C/C++test架构的可扩展性和对复杂部署场景的适应能力。帮助客户在特定目标环境中实现可靠的测试结果收集,确保单元测试的顺利执行,同时为持续集成流程的落地提供了有力的技术保障。
关于慧都
慧都是一家行业数字化解决方案公司,专注于软件、石油与工业领域,以深入的业务理解和行业经验,帮助企业实现智能化转型与持续竞争优势。在软件工程领域,我们提供开发控件、研发管理、代码开发、部署运维等软件开发全链路所需的产品,提供正版授权采购、技术选型、个性化维保等服务,帮助客户实现技术合规、降本增效与风险可控。
慧都科技作为Parasoft公司在中国区的官方授权合作伙伴,为国内企业提供Parasoft C/C++test产品的正版授权、定制化部署与全生命周期技术支持与服务。我们致力于助力客户精准贯彻功能安全标准、全面提升软件开发效率、有效管控项目风险,最终构建符合国际标准的高质量软件体系。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@ke049m.cn
BarTender 标签管理系统,正是帮助企业轻松实现 GS1 标准化标签设计、编码生成与信息联动的强大工具。
Parasoft C/C++test 是一款功能强大的 C/C++ 软件测试工具,集成了静态代码分析、单元测试、集成测试和覆盖率分析等功能,单元测试作为其关键功能之一,为了适配多样化的目标部署环境,C/C++test 设计了灵活的测试结果收集机制。通过Socket通讯方式来收集单元测试结果,从而扩展其测试覆盖范围与应用场景。
Parasoft C/C++test作为一款功能全面的自动化代码质量保障工具,为C/C++开发者提供了静态分析、单元测试和运行时错误检测等核心功能。通过将其与轻量级且广受欢迎的VScode编辑器集成,开发团队可以在熟悉的编码环境中实时获得代码质量反馈,有效提升开发效率与代码可靠性。
本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@ke049m.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢