【回眸】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…...
利用最小二乘法找圆心和半径
#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
