三、单元测试
三、单元测试
- 好的单元测试必须遵守 AIR 原则
- A:Automatic(自动化)
- I:Independent(独立性)
- R:Repeatable(可重复)
- 单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化才有意义。输出结果需要人工检查的测试不是一个好的单元测试。不允许使用 System.out 来进行人肉验证,单元测试必须使用 assert 来验证
- 保持单元测试的独立性。为了保证单元测试稳定可靠且便于维护,单元测试用例之间决不能互相调用,也不能依赖执行的先后次序
- 单元测试是可以重复执行的,不能受到外界环境的影响
- 对于单元测试,要保证测试粒度足够小,有助于精确定位问题。单测粒度至多是类级别,一般是方法级别
- 核心业务、核心应用、核心模块的增量代码确保单元测试通过
- 单元测试代码必须写在如下工程目录: src/test/java,不允许写在业务代码目录下
- 单测的基本目标:语句覆盖率达到 70%;核心模块的语句覆盖率和分支覆盖率都要达到 100%
- 编写单元测试代码遵守 BCDE 原则,以保证被测试模块的交付质量
- 对于数据库相关的查询,更新,删除等操作,不能假设数据库里的数据是存在的,或者直接操作数据库把数据插入进去,请使用程序插入或者导入数据的方式来准备数据
- 和数据库相关的单元测试,可以设定自动回滚机制,不给数据库造成脏数据。或者对单元测试产生的数据有明确的前后缀标识
- 对于不可测的代码在适当的时机做必要的重构,使代码变得可测避免为了达到测试要求而书写不规范测试代码
- 在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试最好覆盖所有测试用例(UC)
- 单元测试作为一种质量保障手段,在项目提测前完成单元测试,不建议项目发布后补充单元测试用例
- 为了更方便地进行单元测试,业务代码应避免以下情况:
- 构造方法中做的事情过多
- 存在过多的全局变量和静态方法
- 存在过多的外部依赖
- 存在过多的条件语句
- 不要对单元测试存在如下误解:
- 那是测试同学干的事情。本文是开发手册,凡是本文内容都是与开发同学强相关的
- 单元测试代码是多余的。系统的整体功能与各单元部件的测试正常与否是强相关的
- 单元测试代码不需要维护。一年半载后,那么单元测试几乎处于废弃状态
- 单元测试与线上故障没有辩证关系。好的单元测试能够最大限度地规避线上故障
相关文章:
三、单元测试
三、单元测试 好的单元测试必须遵守 AIR 原则 A:Automatic(自动化)I:Independent(独立性)R:Repeatable(可重复) 单元测试应该是全自动执行的,并且非交互式的…...
“Spring管理JavaBean的过程及Bean的生命周期“
目录 引言1.弹簧容器2. Bean的生命周期2.1 配置javaBean2.2. 解析Bean的定义2.3 检查是否需要添加自己的功能2.4 初始化2.5 实现Aware接口2.6 扩展2.7. 销毁 3. 单例模式和原型模式3.1. 单例模式3.2. 原型模式 4. 总结 引言 Spring框架是一个非常流行的Java应用程序框架&#…...
@mouseover不起作用,并没有触发
我的错误代码如下: <el-rowv-for"version in item.version_list":key"version.id":class"{ blue-background: versionItem.id version.id }"mouseover.native"version.isHovered true"mouseleave.native"version…...
Vue 2 组件注册
组件名的命名规则 定义组件名的两种方式: 短横线分隔命名,Kebab Case,例如my-component-name。单词首字母大写命名,Pascal Case,例如MyComponentName。 第一种方式在模板中使用<my-component-name>引用该元素…...
学习游戏开发引擎,打造梦想中的虚拟世界!
游戏开发引擎是游戏开发过程中的关键工具,它们提供了开发者所需的各种功能和资源,加速了游戏的制作过程。以下是一些常用的游戏开发引擎以及它们的优势: Unity(Unity3D): 优势: Unity 是目前最…...
AI搜索引擎助力科学家创新
开发者希望通过帮助科学家从大量文献中发现联系从而解放科学家,让他们专注于发现和创新。 图片来源:The Project Twins 对于专注于历史的研究者Mushtaq Bilal来说,他在未来科技中投入了大量时间。 Bilal在丹麦南部大学( Universit…...
神经网络基础-神经网络补充概念-50-学习率衰减
概念 学习率衰减(Learning Rate Decay)是一种优化算法,在训练深度学习模型时逐渐减小学习率,以便在训练的后期更加稳定地收敛到最优解。学习率衰减可以帮助在训练初期更快地靠近最优解,而在接近最优解时减小学习率可以…...
android.system.ErrnoException: open failed: EPERM (Operation not permitted)
android 10(Q)开始增加了沙盒机制,不能直接把文件保存到/sdcard目录下,只能保存到APP专属目录下;AndroidManifest.xml在标签下增加属性【android:requestLegacyExternalStorage“true”】可以暂时保存到/sdcard路径下,但是Android…...
基于 KubeSphere 的应用容器化在智能网联汽车领域的实践
公司简介 某国家级智能网联汽车研究中心成立于 2018 年,是担当产业发展咨询与建议、共性技术研发中心、创新成果转化的国家级创新平台,旨在提高我国在智能网联汽车及相关产业在全球价值链中的地位。 目前着力建设基于大数据与云计算的智能汽车云端运营…...
面试之ReentrantLock
一,ReentrantLock 1.ReentrantLock是什么? ReentrantLock实现了Lock接口,是一个可重入且独占式的锁,和Synchronized关键字类似,不过ReentrantLock更灵活,更强大,增加了轮询、超时、中断、公平锁…...
系统学习Linux-MongoDB
概述 mongodb是一个nosql数据库,它有高性能、无模式、文档型的特点。是nosql数据库中功能最丰富,最像关系数据库的。数据库格式为BSON 相关概念实例:系统上运行的mongodb的进程,类似于mysql实例;库:每个数…...
【带着学Pytorch】2、张量(Tensor)的介绍与创建
一、Tensor介绍 1.1、 张量是什么? 最开始在出现CPU和GPU, GPU出现主要解决的问题时并行计算,在此基础上的软件层面的工作基本上围绕着并行计算进行的,张量也不例外。 首先,我们先来聊聊 编程语言,python,java ,C,C++等,他们都有的共同特点是什么?在大学中计算机类…...
UniApp 制作高德地图插件
1、下载Uni插件项目 在Uni官网下载Uni插件项目,并参考官网插件项目创建插件项目. 开发者须知 | uni小程序SDK 如果下载下来项目运行不了可以参考下面链接进行处理 UniApp原生插件制作_wangdaoyin2010的博客-CSDN博客 2、引入高德SDK 2.1 在高德官网下载对应SD…...
C# 图像处理之灰色图转化为RGB图像
咨询通义千问的“C# 图像处理之灰色图转化为RGB图像”结果,看看如何: 在C#中,可以使用Image类来处理图像。要将灰色图像转换为RGB图像,可以按照以下步骤进行操作: 1.创建一个灰色图像对象。 Image grayImage Imag…...
从零实战SLAM-第八课(非特征点的视觉里程计)
在七月算法报的班,老师讲的蛮好。好记性不如烂笔头,关键内容还是记录一下吧,课程入口,感兴趣的同学可以学习一下。 --------------------------------------------------------------------------------------------------------…...
Azure使用CLI创建VM
使用CLI创建VM之前,确保资源中的IP资源已经释放掉了,避免创建的过程中没有可以利用的公共IP地址打开 cloudshell ,并输入创建CLI的命令如下,-n指定名称,-g指定资源组,image指定镜像,admin-usernam指定用户名…...
Rust: 聊聊AtomicPtr<()>和 *const ()
在Bytes库在github源码(https://docs.rs/bytes/1.1.0/src/bytes/bytes.rs.html#94-100)有关Bytes的定义中, pub struct Bytes {ptr: *const u8,len: usize, // inlined "trait object"data: AtomicPtr<()>, vtable: &st…...
公网远程连接Redis数据库详解
文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥࿰…...
天津报web前端培训班一定要选贵的吗?
根据这几年数据显示,IT行业飞速发展,岗位需求增多,Web前端是个很新的职业,在国内乃至国际上真正开始受到重视的时间不超过五年,Web前端开发是从网页制作演变而来,名称是有很明显的时代特性。 Web前端就业形…...
iptables学习笔记
iptables的结构: iptables由上而下,由Tables,Chains,Rules组成。 一、iptables的表tables与链chains iptables有Filter, NAT, Mangle, Raw四种内建表: 1. Filter表 Filter是iptables的默认表,它有以下…...
任务1:验证中间件的4个【钩子】函数任务2:验证CBV,和FBV做比较
建设如下文件目录格式配置根项目 urls.py(django_gate_demo/urls.py)from django.contrib import admin from django.urls import path, includeurlpatterns [path(admin/, admin.site.urls),# 集成演示应用路由path(, include(app_demo.urls)), ]配置d…...
免费LLM API资源全解析:从选型接入到避坑实战指南
1. 项目概述:一个免费LLM API的“藏宝图”如果你最近在捣鼓一些AI小应用,或者想低成本地体验一下大语言模型的能力,大概率会和我一样,被一个问题卡住:去哪里找免费、稳定、还能用的LLM API?市面上各种模型服…...
第一章-09-相应类型-HTML格式
1.响应类型设置方式2.装饰器中指定响应类3.响应 HTML 格式设置响应类为 HTMLResponse,当前接口即可返回 HTML 内容...
SLCAN协议实战:从脚本编写到自动化测试全解析
1. SLCAN协议基础:嵌入式开发者的文本化CAN接口 第一次接触SLCAN协议时,我正为一个汽车电子项目头疼——需要快速验证CAN总线设备却找不到合适的调试工具。直到发现抽屉里吃灰的LAWICEL CANUSB适配器,这个基于SLCAN协议的小玩意彻底改变了我…...
如何解决神界原罪2模组冲突问题:Divinity Mod Manager终极指南
如何解决神界原罪2模组冲突问题:Divinity Mod Manager终极指南 【免费下载链接】DivinityModManager A mod manager for Divinity: Original Sin - Definitive Edition. 项目地址: https://gitcode.com/gh_mirrors/di/DivinityModManager Divinity Mod Manag…...
如何快速上手CircuitJS1桌面版:离线电路仿真的终极指南
如何快速上手CircuitJS1桌面版:离线电路仿真的终极指南 【免费下载链接】circuitjs1 Standalone (offline) version of the Circuit Simulator with small modifications based on modified NW.js. 项目地址: https://gitcode.com/gh_mirrors/circ/circuitjs1 …...
[Cesium] 数字孪生实践 | 超图插件打通UE4/Unity三维GIS管线全解析
1. 数字孪生与三维GIS技术融合的现状 数字孪生技术正在改变我们理解和构建物理世界的方式。简单来说,数字孪生就是通过数字化手段,在虚拟空间中创建一个与真实世界完全对应的"双胞胎"。这个数字化的双胞胎可以实时反映真实世界的状态ÿ…...
OBS多平台直播插件:obs-multi-rtmp终极使用指南与架构解析
OBS多平台直播插件:obs-multi-rtmp终极使用指南与架构解析 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 在当今内容创作者蓬勃发展的时代,多平台同步直播已成为…...
Kubernetes二进制文件管理器KBM:高效管理kubectl、helm等工具版本
1. 项目概述:为什么我们需要一个Kubernetes二进制文件管理器? 如果你和我一样,长期在多个Kubernetes集群、不同版本的环境之间切换,或者需要为CI/CD流水线、离线环境准备特定版本的 kubectl 、 helm 、 kustomize 等工具&am…...
山东反向旅游推荐“小众秘境古村落”
假期不想挤热门景区,只想寻一处安静古村放空散心?给大家整理山东4 个小众秘境古村落,全程 1-2.5 小时车程,适合近郊自驾、短途出游,原生态氛围拉满,人少景美超适合避峰出行。一、济南长清|方峪古…...
