C/C++ test中文网站 > 新手入门 > C/C++test怎么设置单元测试桩函数 C/C++test桩函数调用异常如何排查
教程中心分类
C/C++test怎么设置单元测试桩函数 C/C++test桩函数调用异常如何排查
发布时间:2026/09/28 10:38:28

  测试一个函数时,它可能会顺带访问数据库、设备接口或尚未完成的模块。想让这些调用按预设结果返回,就需要设置桩函数。下面以C/C++test Professional的Eclipse集成界面为例,说明怎样创建桩,以及调用异常时从哪里查起。

  一、C/C++test怎么设置单元测试桩函数

 

  先让工具识别被测代码调用了哪些函数,再决定为哪个函数建桩。如果目标函数已有原始实现,创建用户桩更合适;自动桩主要用于缺少实现的函数。

 

  1、查看需要建桩的函数

 

  ①在项目树中选中被测源文件,运行【Collect Stub Information】测试配置。

 

  ②依次点击【Parasoft】→【Show View】→【Stubs】,在列表中找到目标函数。

 

  ③查看该行的【Definition】和【Location】,确认当前使用的是原函数、已有桩,还是尚未找到定义。

 

  2、创建并保存用户桩

 

  ①在【Stubs】视图中右键点击目标函数,选择【Create User Stub】。

 

  ②在弹出的窗口中填写桩文件名和保存位置,点击【Finish】。

 

  ③在生成的函数体中填入测试所需的返回值或参数处理代码,保存文件。

 

  如果列表显示目标函数缺少定义,也可以右键选择【Generate Auto Stub】。生成后打开桩文件,补齐未完成的返回语句,再保存。已有原函数时,不要指望自动桩覆盖它:C/C++test会优先使用原函数。

 

  3、为测试用例指定返回值

 

  需要让同一个桩在不同用例中返回不同结果时,可以在测试用例编辑器里配置。

 

  ①在【Test Case Explorer】中双击要修改的测试用例。

 

  ②在【Add new】中选择【Stub Configuration】,点击【+】,将该步骤拖到【Call】之前。

 

  ③在【Function】中选定桩函数;在【Action】中选择【SET VALUE】,将【P1】填为*__return,在【P2】填写预期返回值。

 

  ④点击【File】→【Save】,运行该测试用例。

 

  二、C/C++test桩函数调用异常如何排查

 

  先看现象:程序仍进入原函数、桩被调用却返回错误结果,还是测试程序根本无法构建。三种情况的检查位置不同。

  1、程序仍然调用原函数

 

  ①运行【Collect Stub Information】,打开【Parasoft】→【Show View】→【Stubs】。

 

  ②如果目标函数的【Definition】显示【Original】,右键该函数选择【Create User Stub】,保存后重新运行测试。

 

  ③依次打开【Parasoft】→【Test Configurations】→【Execution】→【General】,检查【Instrumentation mode】,选择包含桩插桩功能的模式。

 

  ④如果目标函数来自项目外的库,在同一页选择【Custom instrumentation】,点击【Edit】,将【Function stubs mode】设为【Stub all calls】。

 

  2、桩已调用,但返回值不对

 

  ①打开对应测试用例,检查【Stub Configuration】是否位于目标【Call】之前。

 

  ②核对【Function】是否选中了正确的函数,并检查【SET VALUE】对应的【P1】、【P2】。

 

  ③在【Stubs】视图菜单中打开【Stub settings...】,检查【Enable Stub Callbacks】;如果建桩时未启用,启用后重新生成桩。

 

  ④检查是否启用了【Insert call to original function】;若不需要在未配置回调时调用原函数,取消该选项并重新生成桩。

 

  3、构建报错或桩函数找不到

 

  ①在【Stubs】视图中查找目标函数,查看【Definition】是否标有【conflict】;如有,移除重复的用户桩定义。

 

  ②依次打开【Parasoft】→【Test Configurations】→【Execution】→【Symbols】,核对【Use extra symbols from files found in】是否包含桩文件所在目录。

 

  ③重新运行【Collect Stub Information】,再运行测试;检查构建输出中指向的函数名和桩文件位置。

 

  三、同一个桩被调用多次怎么核对

 

  有些被测函数会在一次执行中反复调用同一个依赖。只看最终返回值,容易漏掉调用次数或顺序上的问题。

 

  1、给每次调用设置不同结果

 

  ①打开测试用例的【Stub Configuration】,在【Action】中选择【SET VALUE】。

 

  ②在【P1】填写*__return,在【P2】按调用顺序填写花括号包围的逗号分隔值,例如{0,-1}。

 

  ③保存并运行用例,核对第一次和第二次调用后,被测函数分别进入了预期分支。

 

  2、检查桩到底调用了几次

 

  ①在【Add new】中选择【Stub Expectations】,点击【+】,将它拖到相关【Call】之前。

 

  ②在【Action】中选择【EXPECT NUMBER OF CALLS】,填写目标函数和预期次数。

 

  ③保存并运行测试用例,查看调用次数是否符合预期。

  总结

 

  桩函数能帮你把难以控制的外部调用变成可重复的测试条件,也让异常分支更容易验证。写用例时,不妨同时想清楚“希望它返回什么”和“希望它被调用几次”,后续修改代码时也更容易看出行为变化。希望这篇关于C/C++test单元测试桩函数设置与调用排查的内容对大家有帮助;如有C/C++test相关需求,欢迎联系我们咨询。

读者也访问过这里:
176 5129 0128