写UT时的技巧总结

UT编写记录 UT编写规则https://zhuanlan.zhihu.com/p/424117483 1、遵循AIR原则 A(automation,自动化):单元测试应该是全自动执行的,并且非交互。 I (Independence,独立性):单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。 --------反例:method2需要依赖method1的执行,将执行结果作为method2的输入。 R(Repeatable,可重复):单元测试是可以重复执行的,不能受到外界环境的影响。 2、结构 a、. 阅读详情

1、ut编译

用脚本去编译需要从头构建比较慢,在全量构建一次后可以直接在/zdrive/tests/这个目录下运行makefile,需要指定target

sudo make platform_unit_test

编译完以后,可以找到自己的ut可执行文件直接运行,比如

/zdrive/tests/platform/modules/om/unit_test_cfgmanager_cfg_fwk

这样可以比较快的发现问题,当然也可以直接下断点。

如果要查看覆盖率,需要把所有用例执行一遍,同样在这个目录下,

ctest -R unit_test_* -V

覆盖率文件在zdrive\tests\platform\modules\om\coverage_report

注意如果运行的时候加了sudo可能没有一些动态库路径,不加sudo目录没权限,只要把当前目录递归777即可。

切换分支后分支覆盖率可能生成失败,是因为源文件有变动,有些找不到了,根据报错信息找到对应的文件,比如cfg_fwk.cpp如果报错了
这样去搜索把报错的文件的覆盖率文件.gcno和.gcda删除了

2、活用RAII机制

有些类的成员变量记载了状态,在某条用例中,我希望能够改变这个状态,但是用例只有又要恢复。

首先,包含头文件的时候用define宏的方式改成public

然后写一个简单的RAII存储类,构造的时候赋值,析构的时候改回去

那么,用例里面就可以临时改变值了,离开了作用域只有就会自动恢复,再也不用担心忘记把上一条的用例状态恢复了。

3、封装IO和通信接口

一个最简单的例子,如果某个函数里面直接调用fwrite或者fread,在IO条件不满足的情况下,下面的分支就无法走了,最常见的场景就是配置文件的读取。因此,最好将这种IO接口单独封装一下,

这里封装的读取json文件,在测试的时候可以直接打桩这个接口,打桩一个自己实现的接口可比打桩一个libc的接口简单许多了。

世界时(Universal Time, UT)的定义与详解 世界时(Universal Time, UT)是基于地球自转的时间系统,用于描述地球在空间中的真实旋转角度。它直接反映地球自转的变化,是天文学、大地测量和导航的重要基准。世界时分为多个子类型,主要包括 **UT0、UT1 和 UTC**,各自有不同的定义和用途。 阅读详情

相关推荐

什么是UT测试

​UT测试,中文全称为单元测试,是指对软件中的最小可测试单元进行检查和验证。这里的“单元”具体指的是:在面向对象编程中,通常是一个类。在过程式编程中,通常是一个函数或一个方法。​核心思想​:将程序拆分成最小的独立单元,并针对每个单元,​隔离其所有外部依赖,单独验证其逻辑正确性。您可以把它想象成电子产品的生产流程:在把一个个芯片和元器件(单元)组装成一块完整的主板(模块)之前,必须先对每一个最微小的电阻、电容和芯片进行严格的单独测试,确保它们本身没有问题。单元测试就是这个“元器件测试”环节。

SmallBull的博客 1861

【JAVA-UT】2、写UT的科学步骤

本节演示如何写一个ut。 首先给出一个类Result。 public Class Result { private String downLoadStatus; private String failureReason; public Result(String status, String reason) { downLoadStatus= status; ...

liangjing1000的专栏 6241

UT608对讲机自定义配置软件完全指南

对讲机,作为一种无线电通信设备,主要由以下基本组件构成:发射机(负责信号的发送)、接收机(负责信号的接收)、麦克风和扬声器(用于声音的输入输出)、以及电源。这些组件协同工作,使得用户能够通过无线频率在一定范围内进行实时通信。写频软件是连接对讲机与电脑的桥梁,它允许用户在电脑上完成对讲机频道设置的编程。不同的写频软件可能具有不同的界面风格和功能模块,但它们通常都包含了以下几个核心部分:设备连接界面:用户可以通过这个界面将对讲机与电脑连接。这可能涉及到USB接口连接或蓝牙连接。

weixin_42511373的博客 740

合格的后端Coder都应该写好UT和Mock测试

关于测试 测试都包括哪些 广义的测试包括UT、IT、压力测试、硬件测试等等,这里重点讨论Unit Test即单元测试。 啥是UT 单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。 简而言之就是覆盖你的代码的一些测试用例,不依赖于任何第三方的服务依赖,如H

Newerwu的专栏 1224

UT 脚本UT 脚本UT 脚本UT 脚本UT 脚本

UT 脚本

地瓜机器人RDK Studio使用入门教程

不知道大家在使用AI开发板的时候有没有遇到过板子官方镜像占据空间大难以保存,想要的时候找不到?官方示例项目久而久之便难以找寻?首次登陆开发板连接网络还需要准备显示器键盘鼠标外设繁杂?…为了解决平时开发过程中遇到的种种不便利问题,地瓜机器人创新的推出了RDK Studio这一官方开发者软件,使智能机器人开发迎来新纪元!通过这一软件极大降低了机器人的开发门槛,哪怕是零基础的用户亦可轻松上手RDK系列板卡!

xiongqi123123的博客 3427

UT

最近项目coding结束了,需要做ut,因为是跨平台的,所以打算统一在ubuntu下面写脚本实现自动化的测试。这个项目其实就是一个provider,编译好的dll放置在某台机子(server)上面,然后通过远程机子与server建立连接,进行cli操作。 client端安装PyWBEM (python wbem),因为需要自动登录到server上面,所以用了expect脚本进行自动登录操作。 对于

hustshi的专栏 986

Jenkins离线安装保姆级教程:从下载.war包到SVN+Maven项目一键部署(附避坑脚本)

本文详细介绍了Jenkins离线安装的全流程,包括.war包下载、SVN+Maven项目配置及自动化部署。特别针对内网环境提供解决方案,涵盖插件管理、开发工具链配置、构建触发器和SSH部署等关键步骤,帮助企业在网络隔离环境下实现高效持续集成。

weixin_30096975的博客 374

UT开发总结

UT开发

tlxamulet的博客 1389

模电学习笔记(十二)——跨阻放大器

模电学习笔记(十二) 跨阻放大器 跨组运算放大器是将电流信号转换成为电压信号,电流到电压增益基于反馈电阻。 设计目标: 输入 输出 带宽 电源 0A 100uA 0V 7V 20kHz 15V -15V 1.计算R1的值(增益电阻器) 2.计算C1的值满足电路带宽 ...

tang11081023的博客 2万+

深入瑞芯微SDK:手把手解析Uboot、Kernel到Rootfs的镜像生成与烧录

本文深入解析瑞芯微SDK中从Uboot、Kernel到Rootfs的镜像生成与烧录全流程,揭示编译背后的技术细节。通过详细分析SDK架构、镜像生成流水线、分区表定制、Rootfs构建及烧录科学,帮助开发者从会编译进阶到懂原理,掌握系统级开发的关键技术。

weixin_29193359的博客 270

java中单元测试ut怎么写_合格的后端Coder都应该写好UT和Mock测试

关于测试测试都包括哪些广义的测试包括UT、IT、压力测试、硬件测试等等,这里重点讨论Unit Test即单元测试。啥是UT单元测试(又称为模块测试, Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子...

weixin_30301989的博客 2048

java调用第三方api接口获取数据

弊端,但是并不是每个接口都适用于这套模板,之前写的接口不适用,都是在这个模板里做了定制处理(if 特殊表 -》处理),需要考虑兼容之前的代码,这种兼容代码,有风险会改掉之前的逻辑个人喜欢,有一个接口,写一段代码灵活自由些。2.还有一部分是对post请求的返回数据,做处理,因为json返回的格式如果双方没有约定好,里面数据是多层json嵌套,需要做处理。江同事交接的就是这个代码模板,可以看下源码调试一下,之前交接的视频,也可以看下,主要还是看代码理解快些,将 写好的代码达成jar包,上传到linux上去,

随风不随水的博客 2036

java ut_【JAVA UT】2、写UT的科学步骤

文|码术张在形式上,UT即是一个个测试类。一个测试类,包含若干method,这些method,对被测试类的method的功能,进行验证。一个测试类,是如何诞生的呢?本节将详细说明。被测试类Result如下:public Class Result {private String downLoadStatus;private String failureReason;public Result(Str...

weixin_40001442的博客 701

通达信抓波段指标(主图)

VAR3:=IF(INBLOCK('科创板'),VART20,IF(INBLOCK('创业板') AND DATE>1200823,VART20,IF(INBLOCK('ST板块'),VART5,VART10)));VAR5:=IF(INBLOCK('科创板'),CT20,IF(INBLOCK('创业板') AND DATE>1200823,CT20,IF(INBLOCK('ST板块'),CT5,CT10)));曾涨停/紫色细K线:青字"炸",涨停未封住。曾跌停/蓝色细K线:红字"撬",跌停被打开。

q125500612的博客 2135

046篇:数据统计:分组、求和、平均值、最大最小值

本文介绍了在RPA中实现数据分组统计的方法。通过字典+循环组合,可以完成按单字段或多字段的分组聚合操作,包括求和、计数、求平均值及最大/最小值等。文章详细讲解了分组统计的原理,并提供了单级分组、多级分组的具体实现步骤,最后通过销售数据按月分组的实战案例,演示了如何从原始数据到生成汇总报表的完整流程。这些方法可以灵活应用于各类数据统计分析场景。

weixin_59649563的博客 214

写UT:使用Junit写UT

在此之前我们需要弄清楚,在上面情况下使用mock写UT,在上面情况下使用Junit写UT。 大多数情况来说,不需要与数据库发生数据交互的使用mock,即查;与数据库发生交互的使用Junit写UT,即增、删、改。 当然还有特殊情况:逻辑很复杂,代码量很多,重构很彻底的一些功能方法使用Junit是很容易出错的,场景太多,无法全部覆盖到,我觉得应该使用mock测试比较好。功能重构之后=A模块+B模块,A...

People of solitary 823

【毕设级教程】从0到1实现基于YOLOv8的xView卫星图像目标检测系统(含UI界面,助力遥感智能毕设)

本文基于YOLOv8模型设计了一个面向xView卫星图像的目标检测系统。首先对xView数据集进行了格式转换处理,将原始多边形标注转换为YOLO格式的边界框标注。随后通过配置YOLOv8模型参数完成训练,实现了对卫星图像中建筑、车辆等多类目标的准确识别。为提高系统交互性,采用PyQt开发了可视化界面,支持图像选择、实时检测和结果展示功能。整个系统兼顾学术价值和实用价值,为遥感领域的自动化目标检测提供了可行方案。

m0_64661770的博客 130

C算法-UT哈希

一、键值是INT型 1、定义结构体,对应键值是整形int,需要有个全局指针比如users typedef struct { int id; /* key */ char name[10]; int cnt; UT_hash_handle hh; /* makes this structure hashable */ }my_struct; my_struct *users = NULL; /* important! initialize

weixin_45554139的博客 1329

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

1620年-1972年历书时ET与世界时UT之间的关系

% (last updated 2018-12-14) % Delta-T 1620-1972 % delta-T = ET - UT for the years 1620 - 1972 % ET-UT, s % % Year +0.0 +1.0 +2.0 +3.0 +4.0 % -----------------------------...

算法小站 1020

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

android ut接口介绍,CMCC UT接口(IMS SS)规范说明

OverviewCMCC 关于 UT 部分的说明及规范请参考 "中国移动VoLTE终端技术规范" 中的第6节说明.写在前面: 由于 CMCC 的XCAP server(UT) 和 CS Server(HLR)暂不支持 SS 业务配置SYNC. 因此, 针对支持 UT 的卡, 以及所在城市提供 UT 服务, 则如果某项 SS 业务不支持通过 UT 配置,即便强制通过 CS 配置成功(CMCC有说明...

weixin_36151066的博客 3202

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

写UT:使用Mock写UT

以前喜欢说废话,废话少说,直接上代码。 一、测试类基类 @RunWith(MockitoJUnitRunner.class) public abstract class BaseMockTest { } 二、被测试类 举一个例子,代码如下,不需要看明白代码,只需要知道这是一个controller的类,manager,dao层的mock都如此测试即可。 package com.baozun.ec...

People of solitary 2590

无迹变换UT

无迹变换(Unscented Transform, UT)是一种数学工具,用于处理非线性系统状态估计中的非线性函数的传播问题。它在无迹卡尔曼滤波(UKF)中起到关键作用,允许高度非线性的系统状态通过非线性函数准确地传播,同时保持了状态的均值和协方差的准确性。无迹变换的基本思想是通过精心选择的一组点(称为Sigma点)来近似描述原始状态的概率分布,然后将这些点通过非线性函数映射到新的状态空间,通过映射后的点来近似新状态的概率分布。

chen的博客 5267

mysql 源码-- ut_ad ut_d ut_a 函数模式解析

在mysql源码中含有大量的函数ut_ad ut_d ut_a,又都是宏定义,记录下相关函数,便于初学者看代码易于理解 ut_ad ut_d 为源代码编译 DEBUG模式下才有作用,在release版本中不存在,代码中也就是没有相关的代码 ut_a 为源代码编译 DEBUG模式和release版本都存在 ut_a ut_ad 函数的作用 ut_a ut_ad 类似于C语言中assert的断言功能,当()中的表达式不为真则mysql主程序直接退出 仅是判断函数或者变量是否是预期的值,仅仅是判断的功能,不会对流

qhgxinxing的博客 1485
上一篇: 我在公司还可以写文章吗
下一篇: C++提前构造好传入和函数内构造的差异实验
蜗牛慢慢_走
博客等级 码龄15年 0粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值