如何在VectorCAST中测试可变参数函数?

创提信息
2021/11/22

分享到

测试可变参数函数
 
在对项目代码做单元测试时,有些函数可能是可变参数的函数,针对可变参数函数生成测试用例后,会发现参数树中只能找到固定的参数部分,可变参数部分无法输入参数。这是因为VectorCAST不能直接在参数树中显示出没有名称的参数,所以在测试用例设计界面中无法找到可变参数的部分。在这种情况下,如果需要测试可变参数函数,可以借助User Code来测试被测函数。
 
User Code是VectorCAST中很重要的一部分,而且功能十分强大,通过编辑User Code可以使得测试工作更容易进行,也可以通过User Code来拓展VectorCAST生成的测试套件的任何一部分,使用标准的C、C++语法,就可以方便地编辑User Code。
 
针对如下简单的示例代码,利用VectorCAST进行测试:
 

如何在VectorCAST中测试可变参数函数-1.png

 
首先创建测试环境,测试环境创建完成,对函数average函数做单元测试,打开测试用例设计界面后,我们只能看到参数num和return,可变参数部分因为没有显示在界面中,所以也不能直接设计输入值和期望。在这种情况下,就需要我们通过User Code编写对应数量参数的函数来调用被测函数,就可以满足测试可变参数函数的目的。到菜单Environment->User Code->Edit,打开User Code 界面,找到Unit Appendix User Code,展开后找到被测文件,双击空白区域,进入编辑状态,在此处定义不同参数数量的函数,调用被测可变参数函数:


如何在VectorCAST中测试可变参数函数-2.png


如何在VectorCAST中测试可变参数函数-3.jpg

 
完成后点击Test Compile按钮,测试编译,保存,重新构建环境。构建完成后可以在函数列表中看到新增的被测函数,对不同参数数量的函数创建测试用例,在界面输入参数,执行测试用例即可测试被测的可变参数函数。


如何在VectorCAST中测试可变参数函数-4.jpg

打桩可变参数函数

 
在对项目代码做单元测试时,被测函数调用到了一些外部函数,这时需要对外部函数打桩,排除外部函数的干扰。打桩一方面可以对传递到桩函数中的参数设置期望值,验证传递参数是否正确;另一方面可以自定义桩返回值,返回一个自定义的值。某些情况下,被测函数调用的外部函数是可变参数的函数,但是对于可变参数打桩后只能看到固定参数的部分,可变参数部分因为没有参数名,所以无法直接在参数树中找到可变参数部分,也就不能直接设置桩函数参数的期望值。在这种情况下,可变参数部分也可以借助User Code来获取桩函数中可变参数的部分,实现验证可变参数部分的参数值。
 
到菜单Environment->User Code->Edit,打开User Code 界面,找到Unit Appendix User Code,展开后找到被测文件,双击空白区域,进入编辑状态,定义一个全局变量,用于存储可变参数的部分。在此处为了方便,定义了一个10元素的数组,用于存储可变参数的部分,这里需要根据实际代码,对User Code做出调整。


如何在VectorCAST中测试可变参数函数-5.png


如何在VectorCAST中测试可变参数函数-6.jpg

 
完成后点击Test Compile按钮,测试编译,保存。
 
到菜单Environment->Configure Stub->Edit,打开User Code编辑界面,找到需要打桩的外部函数,双击Beginning of stub,进入编辑状态,输入以下代码,这里的代码是将所有可变参数的部分赋值给全局变量average_param_list。


如何在VectorCAST中测试可变参数函数-7.png


如何在VectorCAST中测试可变参数函数-8.jpg

 
这里的User Code也需要根据实际代码情况,做出调整。完成后点击Test Compile按钮,测试编译,保存,重新构建环境。环境构建完成后,可以在测试用例设计界面,看到新增的全局变量,对外部函数打桩后,可以输入全局变量的期望值,执行测试用例,被测函数执行完成后,传递进桩函数的实际值值会自动和期望值做比较,如果相同,测试用例执行通过。


如何在VectorCAST中测试可变参数函数-9.jpg