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

2024-04-22 05:48

本文主要是介绍如何在VectorCAST中测试可变参数函数?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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

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

打桩可变参数函数

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

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

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

“原创内容,转载请标明出处” 

这篇关于如何在VectorCAST中测试可变参数函数?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924951

相关文章

SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程

《SpringBoot中整合RabbitMQ(测试+部署上线最新完整)的过程》本文详细介绍了如何在虚拟机和宝塔面板中安装RabbitMQ,并使用Java代码实现消息的发送和接收,通过异步通讯,可以优化... 目录一、RabbitMQ安装二、启动RabbitMQ三、javascript编写Java代码1、引入

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

Python如何使用seleniumwire接管Chrome查看控制台中参数

《Python如何使用seleniumwire接管Chrome查看控制台中参数》文章介绍了如何使用Python的seleniumwire库来接管Chrome浏览器,并通过控制台查看接口参数,本文给大家... 1、cmd打开控制台,启动谷歌并制定端口号,找不到文件的加环境变量chrome.exe --rem