TESSY创建需要手写桩的测试用例

      如果需要让桩函数有额外的功能,如:传参检测、局部数据处理、多传参检测、函数实现变更等,可以进行手写桩。

     我们以tessy5.1 IDE为例,给大家展示编写一个需要手写桩的测试用例过程。

1、前期的准备工作

     可以参考以下文章:

     TESSY创建单元测试或集成测试工程_tessy做单元测试-CSDN博客

     TESSY创建以及设计一个测试用例-CSDN博客

     接下来我们以这个作为开始状态进行介绍

2、、源码分析
static bool runner_control(uint8_t addr)
{
	 uint8_t res = 1u;
	 uint8_t wdata[2]={0x00,0x00};
	 bool result = false;
	 
   if (0u == addr){
      result = false;
   }
   else
   {
   	  res = door_open_pro(addr,&wdata,1);
   	  if(0u == res){
   	  	res = door_open_pro(addr,&wdata,2);
   	  	if((0u == res)&&(0xAA == wdata[0])){
   	  		res = door_open_pro(addr,&wdata,3);
   	  		if((0u == res)&&(0x55 == wdata[1])){
   	  			 door_open();
   	  			 result = true;
   	  		}
   	  	}
   	  }
   }
   return result;
}

       看到执行过程中,需要根据door_open_pro的返回的状态以及wdata的值来进行处理,因此需要我们通过手写桩来完成测试。

2、 创建用例
   2.1 创建普通桩

   2.2 创建用例

        创建用例后,在用例中填入数据,执行分析、运行用例,发现提示如下错误。

提示我们桩函数没有实现,在TDE界面下可以看到如下提示:

  2.3、手写桩代码

我们可以 在stub code输入框中编写如下代码,在执行一下用例,发现OK了。

 为什么需要我们手写如下这一行代码呢,因为函数中用到了这个door_open_pro的返回值。

return 1;

 但是为了执行到door_open();这个函数,那就需要写一个稍微复杂的桩代码了,如下:

static cnt = 0;

cnt++;

if(1 == cnt){
  return 0;
}else if(2 == cnt){
  pdata[0] = 0xAA;
  return 0;
}else if(3 == cnt){
  pdata[1] = 0x55;
  return 0;
}

执行结果如下:

2.4 增加调用追踪

   怎么直观的判定桩函数使测试的代码按照预期的逻辑执行呢?

   我们可以增加调用追踪,步骤如下:

     1、选择Call Trace;

     2、选择执行的函数;

     3、函数的位置操作,通过 (左移)或(右移),选中的函数就可以从Available Functions中移入Expected Calls或从Expected Calls移除到Available Functions ,通过(上移)、(下移),可以移动Expected Calls中选中的函数先后顺序;

执行结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/875438.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt常用控件——QTextEdit

文章目录 QTextEdit核心属性和信号同步显示示例信号示例 QTextEdit核心属性和信号 QTextEdit表示多行输入框,是一个富文本和markdown编辑器,并且能在内存超出编辑框范围时自动提供滚动条。 QPlainTexEdit是纯文本,QTextEdit不仅表示纯文本&a…

记得忘记密码情况下如何退出苹果Apple ID

在日常使用苹果手机时,我们可能会遇到需要退出Apple ID的情况,比如更换手机、不再使用某些服务或出于安全考虑等。下面,我们就来详细介绍一下苹果手机如何退出Apple ID。 情况一:记得Apple ID密码 若是记得Apple ID密码&#xff…

Tomcat服务详解

一、部署Tomcat服务器 JDK安装官方网址:https://www.oracle.com/cn/java Tomcat安装官方网址:Apache Tomcat - Welcome! 安装JDK 1.获取安装包 wget https://download.oracle.com/otn/java/jdk/8u411-b09/43d62d619be4e416215729597d70b8ac/jdk-8u41…

透明任务栏怎么设置?Windows电脑任务栏透明效果(详尽指南)

电脑任务栏可以自定义调整透明度,在Windows10和Windows11系统中,任务栏透明是默认不透明的。如果想要设置任务栏透明度,那么推荐以下方法实现,简单三个步骤即可实现,一起来看看吧! 第一步、选择合适的任务栏…

基于鸿蒙API10的RTSP播放器(五:拖动底部视频滑轨实现跳转)

拖动前播放位置: 拖动后播放位置: 在Slider组件中,添加onChange方法进行监听,当视频轨道拖放结束时,触发this.seekTo()函数,其中seekTo函数需要传递一个视频已播放时长作为参数 Slider({ value: this.p…

【iOS】push和present的区别

【iOS】push和present的区别 文章目录 【iOS】push和present的区别前言pushpop presentdismiss简单小demo来展示dismiss和presentdismiss多级 push和present的区别区别相同点 前言 在iOS开发中,我们经常性的会用到界面的一个切换的问题,这里我们需要理清…

【专题】2024年8月医药行业报告合集汇总PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37621 在科技飞速发展的当今时代,医药行业作为关乎人类生命健康的重要领域,正处于前所未有的变革浪潮之中。数智医疗服务的崛起,为医疗模式带来了全新的转变,开启了医疗服务的新时代。…

SQL超时的常见原因和解决思路

目录 1. SQL超时的常见原因2. 解决思路2.1. 优化SQL查询2.2. 处理锁竞争2.3. 网络和连接配置2.4. 资源监控与调整 3. 预防措施4. 示例:设置SQL超时5. 总结 SQL超时问题常常会影响应用程序的性能和用户体验,了解和处理SQL超时的思路非常重要。以下是一些常…

【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

干部画像系统的意义

干部画像系统是一个高度集成且功能丰富的管理工具,在干部管理、选拔、培养和评价等多个方面发挥着重要作用。显著提升干部管理工作的科学性、准确性和效率性。干部画像系统的意义主要包括: 1、增强干部选拔的精准性 干部画像系统通过全面收集和分析干部…

第15-05章:获取运行时类的完整结构

我的后端学习大纲 我的Java学习大纲 6.1.第一组方法API: 1.API列表:java.lang.Class 类: 2.代码测试: public class ReflectionUtils{ puvblic static void main(String[] args){}// 第一组Testpublic void api_01{//上面截图的代码......…

下载 llama2-7b-hf 全流程【小白踩坑记录】

1、文件转换 在官网 https://ai.meta.com/llama/ 申请一个账号,选择要下载的模型,会收到一个邮件,邮件中介绍了下载方法 执行命令 git clone https://github.com/meta-llama/llama.git​ ,然后执行 llama/download.sh&#xff0c…

IP地址是怎么实现HTTPS访问的?

首先,需要明确的是,IP地址(Internet Protocol Address)是互联网上设备(如服务器、路由器等)的唯一标识符,它允许数据包在网络中正确地路由和传输。然而,IP地址本身并不直接支持HTTPS…

可测试,可维护,可移植:上位机软件分层设计的重要性

互联网中,软件工程师岗位会分前端工程师,后端工程师。这是由于互联网软件规模庞大,从业人员众多。前后端分别根据各自需求发展不一样的技术栈。那么上位机软件呢?它规模小,通常一个人就能开发一个项目。它还有必要分前…

中国水土保持能力防治数据集(1992-2019)

该数据集包括1992年至2019年中国每年的水土保持能力及其影响因子。这些数据是基于改进的RUSLE模型开发的,其中包含植被覆盖和管理(C)因子和降雨侵蚀率(R)因子作为重要的输入因子,针对不同区域进行了优化。 其中该数据集一共包含了9个数据它们分别是&…

Leetcode面试经典150题-82.删除排序链表中的重复元素II

之前写过这个题的基础第83题,看本文之前一定要先看懂这个Leetcode面试经典150题-82.删除排序链表中的重复元素II前序-83.删除排序链表中的重复元素_删除链表中重复的元素-CSDN博客 直接上代码了,解法都在代码里,不懂就留言或者私信 /*** De…

C++---string类常见接口

介绍 string类详情>>>https://cplusplus.com/reference/string/string/?kwstring 1. string是表示字符串的字符串类(感觉就像一个动态的字符数组) 2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作…

突破瓶颈:Java并发编程的最佳实践与技巧,你了解了吗?

文章目录 1 什么是 Executor 和 ExecutorService ?这两个接口有什么区别?2 java.util.concurrent 标准库中 ExecutorService 的可用实现是什么 ?3 什么是 Java 内存模型( JMM )?描述下其目的和基本思想4 JM…

工业相机飞拍的原理及工作原理

工业相机飞拍(或称为工业高速相机飞行拍摄)是一种利用高速图像捕捉技术和精密运动控制系统进行高效图像采集的先进技术。它广泛应用于工业检测、质量控制和自动化生产等领域。本文将详细探讨工业相机飞拍的原理及其工作方式。 一、工业相机飞拍的基本概…

插件第一版基本完成

什么插件 Command Assist 经过多次修改和界面优化,Mac和Windows的适配,最终形态长这样: 欢迎下载使用,反馈问题和建议~ 主要作为日常开发的手边工具,功能不复杂,核心就是常用命令的管理,包括&…