【回眸】Tessy 单元测试软件使用指南(四)常见报错及解决方案与批量初始化的经验
前言
分析时Tessy的报错
1.fatal error: Tricore/Compilers/Compilers.h: No such file or directory
2.error: #error "Compiler unsupported"
3.warning: invalid suffix on literal;C++11 requires a space between literal and string macro
4.error: unknown type name 'Ifx_Strict_32Bit'; did you mean 'Ifx_SReg_32Bit' 编辑
5.error: unknown type name 'fract' error:unkown type name 'sfract';did you mean 'cfract'?
6.error: use of undeclared identifier '__extru'
error: use of undeclared identifier '__insert'
error: use of undeclared identifier '__getbit'
error: use of undeclared identifier '__mfcr'
error: use of undeclared identifier '__disable'
7. error: unkonwn register name 'd2' in asm
error: unkonwn register name 'd0' in asm
error: unkonwn register name 'a11' in asm
error: unkonwn register name 'a10' in asm
error: unkonwn register name 'e14' in asm
8. gcc: error: inline: No such file or directory
gcc:error: int: No such file or directory
输入测试用例后Tessy的报错
1. gcc: error: inline: No such file or directory
gcc:error: int: No such file or directory
2.Undefined reference to 'Mcal_WriteCpuEndInitProtReg'
Undefined reference to 'wait'
3.error 0x4: [tstcomm:readFromBuffer] Unable to receive block size
4.error 0x4: [tstcomm: readFromBuffer] Uable to receive block size
5. error: expected ';' , ',' or ')' before '&' token
6.Undefined reference to 'm88q5192_set_port_based_vlan'
Undefined reference to 'm88q5192_set_vlan_tag'
批量初始化
后记
前言
在使用Tessy进行单元测试时,测试遇到的问题可谓五花八门,分析代码时遇到的错误很多,输入测试用例执行后的错误更是多如牛毛。以下是一些我做单元测试中遇到的报错,和我试了好用的解决方案,供各位C友们参考
分析时Tessy的报错
1.fatal error: Tricore/Compilers/Compilers.h: No such file or directory
解决方案:
需要在源码里找到Compilers.h的完整路径,添加至 Overview--Source--compiler--includes,如果代码中包含头文件的上级目录,则路径添加到上级目录的上级目录即可。
2.error: #error "Compiler unsupported"
解决方案:
问题出现的原因时编译器不支持 #error .理论上应该替换合适的编译器和环境,但是由于Tessy没有更合适的编译器,只好退而求其次,不更换编译器,选择注释 代码中的#error部分,而后该错误消失。
3.warning: invalid suffix on literal;C++11 requires a space between literal and string macro
解决方案:
该警告出现的原因是编译器误用为C++的编译器,调回C语言的编译器即可
4.error: unknown type name 'Ifx_Strict_32Bit'; did you mean 'Ifx_SReg_32Bit' 
解决方案:
该错误出现的原因是编译器不认识 type define的内容,需要在Tessy的 Overview--Source--compiler--define 里添加Ifx_Strict_32Bit的定义,源代码里定义的volatile unsigned int ,但是在define里这样添加后编译器不认 unsigned 并将其识别为error,于是将其改为int。
5.error: unknown type name 'fract' error:unkown type name 'sfract';did you mean 'cfract'?
解决方案:
该错误出现的原因是编译器不认识 type define的内容,需要在Tessy的 Overview--Source--compiler--define 里添加 fract = long ; sfract = short 随后该错误消失。
6.error: error: unknown type name 'IFX_INLINE'
解决方案:
该错误出现的原因是编译器不认识 type define的内容,需要在Tessy的 Overview--Source--compiler--define 里添加宏定义 IFX_INLINE = static inline 编译器不认,并且报错 error: inline: No such file or directory.经过研究发现改成IFX_INLINE = inline 报错信息随后消失。
6.error: use of undeclared identifier '__extru'
error: use of undeclared identifier '__insert'
error: use of undeclared identifier '__getbit'
error: use of undeclared identifier '__mfcr'
error: use of undeclared identifier '__disable'
解决方案:
该错误主要是由一个很大的库文件引起的,暂时没有找到很好的解决方案,选择替代的方案就是注释Bsp.h(包含那个库文件的头文件),并且添加 _TASKING_的宏,在环境设置的地方禁用内联函数。
7. error: unkonwn register name 'd2' in asm
error: unkonwn register name 'd0' in asm
error: unkonwn register name 'a11' in asm
error: unkonwn register name 'a10' in asm
error: unkonwn register name 'e14' in asm
解决方案:
该错误主要是由一个很大的库文件引起的,暂时没有找到很好的解决方案,选择注释掉这个库文件,该错误最终消失
8. gcc: error: inline: No such file or directory
gcc:error: int: No such file or directory
解决方案:
该错误主要是与Overview--Source--compiler--define 里宏定义设置的空格有关,删除空格后重新分析,该错误消失。
输入测试用例后Tessy的报错
1. gcc: error: inline: No such file or directory
gcc:error: int: No such file or directory
解决方案:
该错误出现的原因是宏定义位置在 = 之前删除空格即可,删除空格后该错误消失。
2.Undefined reference to 'Mcal_WriteCpuEndInitProtReg'
Undefined reference to 'wait'
解决方案:
在TIE界面找到unused的函数Mcal_WriteCpuEndInitPortReg和函数wait,移到Used 函数部分并且进行打桩。需要注意的是,如果已经打了普通桩,还是报这个类似的错误,则需要取消普通桩,将普通桩改为高级桩。有些void函数必要时也可以打advanced桩(高级桩)
3.error 0x4: [tstcomm:readFromBuffer] Unable to receive block size
解决方案:
该错误有很多可能的原因,这个排查出是一个函数没有打桩导致的这个错误。
4.error 0x4: [tstcomm: readFromBuffer] Uable to receive block size
解决方案:
该错误并未解决。
5. error: expected ';' , ',' or ')' before '&' token
解决方案:
遇到这个错误的原因经过多网站查找,确定了是因为C语言不支持引用,因为必须打桩print_f,总会遇到这个问题,而且没法避免。迫不得已只好把默认的C语言环境改为C++,这个错误就消失了。
6.Undefined reference to 'm88q5192_set_port_based_vlan'
Undefined reference to 'm88q5192_set_vlan_tag'
解决方案:
在TIE界面的搜索栏里 搜索 m88q5192_set_port_based_vlan函数和 m88q5192_set_vlan_tag函数,将他们移入Used函数,然后打桩(普通桩或者高级桩)填入每个case需要的参数即可执行test case后进行下一步分析。
批量初始化
有些函数在进行测试时,打桩后有很多个函数,进而有很多参数,测试用例多则百来个,如果一个一个赋值时一件非常痛苦的事情,在使用Tessy的过程中我逐渐了解到一些可以批量初始化的方法,即在最左边的变量栏,不管是参数还是单个变量,点击右键开始赋值,和单个case赋值的逻辑一样,如果需要随机值选random即可,如果需要赋值 NULL 和 *none* 也是一样,只要选空指针和忽略值就行了。
后记
短期内应该不会再继续更新Tessy系列了,有热心分享的小伙伴也可以投稿后台,将你遇到的错误和解决方案分享给大家,感谢~
相关文章:

【回眸】Tessy 单元测试软件使用指南(四)常见报错及解决方案与批量初始化的经验
前言 分析时Tessy的报错 1.fatal error: Tricore/Compilers/Compilers.h: No such file or directory 2.error: #error "Compiler unsupported" 3.warning: invalid suffix on literal;C11 requires a space between literal and string macro 4.error: unknown…...
2024 - 10 :生物药学: 如何获取对应核心靶点基因的激酶
如何获取对应核心靶点基因的激酶 步骤 1:收集蛋白质信息 获取 UniProt ID: 对于每个基因,使用 UniProt 数据库获取其对应的蛋白质信息,包括 UniProt ID、序列和功能注释。UniProt 网站:https://www.uniprot.org/ 示…...

STM32 HAL库UART查询方式实例
本文中介绍USART编程涵盖了三种主要方法,详细介绍STM32F407微控制器结合HAL库,通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时,系统才会反馈“密码正确”的确认信息。反之&…...

数据结构--线性表双向链表的实现
目录 思路设计 总体思维导图 插入部分 头插法尾插法 任意位置插入 删除部分 头结点 尾节点 中间节点 只有头结点且删除的就是头结点 编辑 清空链表部分 遍历清空链表的所有节点 不遍历清空 各部分代码 Main部分 MyListedList部分 IndexOutOfException部分 …...

第一个Flutter应用(一)
1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范,其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码(为了阅…...

批量查询快递单号物流信息:高效掌握最后更新动态
在电商和物流行业蓬勃发展的今天,快递单号的物流信息追踪显得尤为重要。对于商家和客户来说,了解包裹的最后更新物流状态是确保货物安全、及时送达的关键。本文将介绍如何批量查询快递单号的物流信息,帮助您高效掌握每个包裹的最新动态。 1运…...

随着硬件水平的提升,LabVIEW有哪些过去的编程方法被淘汰掉了
随着硬件水平的不断提升,尤其是处理器性能、存储能力、通信速度等方面的飞跃,LabVIEW的一些早期编程方法逐渐被更高效、现代的编程技术所取代。以下是一些随着硬件升级而逐步淘汰的LabVIEW编程方法和技术: 1. 低效的数据流传输方式 过去由于…...

Leetcode 206.反转链表
题目链接:206. 反转链表 - 力扣(LeetCode) 题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 解题思路…...

基于springboot和vue.js 养老院管理系统设计与实现
博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆…...

高效数据处理:MapReduce与Hive的实战应用
文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2:创建dwd层数据表step3:创建d…...

【含开题报告+文档+PPT+源码】基于springboot的迎新系统
开题报告 大学迎新系统是为了满足大学在新生入学时的信息化处理需求而开发的系统。在传统方式下,我们新生接待工作是需要新生报名表,就使得我们需要耗费大量的纸张,这将造成资源浪费。在接待新生的时候需要让新生勾选、填写大量的表格&#…...
C#-委托delegate
C#-委托delegate 通常情况下,函数内部需要调用其他函数来实现代码的重用,但这样有一个问题: 如果需要更换所调用的函数则需要对该函数的定义再次修改, 事实上,在程序运行过程中,函数也是作为一个存储在堆中…...

编译Thingsboard3.7.0的过程记录
1、首先去掉test测试,否则会有一堆问题,pom.xml修改如下: <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${surefire.version}</ve…...

vulnhub-THE PLANETS-EARTH靶机
下载并导入靶机至VMWare,设置网络模式为NAT,开机 开启攻击机(kali),也设置为Nat模式,与靶机处于同一网段 扫描靶机ip Nmap 192.168.114.0/24 扫描网段内活跃的主机 可以推断靶机ip为192.168.114.129 扫描…...

【C语言】分支和循环(2)
🤔个人主页: 起名字真南 😙个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 关系操作符2 条件操作符3 逻辑操作符 :|| ,&& ,!3.1 逻辑取反运算符3.2 与运算符3.3 或运算符3.4 练习闰年判断3.5 短…...

Python数据分析-远程办公与心理健康分析
一、研究背景 随着信息技术的飞速发展和全球化的推进,远程工作(Remote Work)成为越来越多企业和员工的选择。尤其是在2020年新冠疫情(COVID-19)爆发后,全球范围内的封锁措施使得远程工作模式迅速普及。根据…...

LabVIEW提高开发效率技巧----使用动态事件
在LabVIEW开发过程中,用户交互行为可能是多样且不可预知的。为应对这些变化,使用动态事件是一种有效的策略。本文将从多个角度详细介绍动态事件的概念及其在LabVIEW开发中的应用技巧,并结合实际案例,说明如何通过动态事件提高程序…...

【STM32开发之寄存器版】(五)-窗口看门狗WWDG
一、前言 窗口看门狗简介: 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个M…...
Leetcode203.移除链表元素-Python
题目链接:203. 移除链表元素 - 力扣(LeetCode) 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入&a…...

属性拷贝MapStruct
端请求通过VO对象接收,并通过DTO对象进行流转,最后转换成DO对象与数据库DAO层进行交互,反之亦然。 当业务简单的时候,可以通过手动编码getter/setter函数来复制对象属性。但是当业务变的复杂,对象属性变得很多&#x…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...