如何编写好的单元测试
时间:2021-9-6 作者:smarteng 分类: 编程
单元测试的概念
今天来讲一下如何写好单元测试
什么是单元测试
单元测试,首先要明确这个单元,从一个单一方法到整个类都可以是一个单元,单元测试就是针对这个单元所写的测试用例。
我们常看到测试同学提到的 单元测试、增量测试、集成测试、回归测试、冒烟测试 。
Google对测试有了新的划分方式:小型测试、中型测试和大型测试。
我们所说的单元测试 基本就是小型测试。
好的单元测试的特点:正确、清晰、完整、健壮
好的单元测试,测试的是 what ,而不是 how
为什么要做单测
对产品质量非常重要
是唯一一次保证代码覆盖率达到100%的测试
修正一个软件错误所需的费用将随着软件生命期的进展而上升
代码规范、优化,可测试性的代码
放心重构
自动化执行,多次执行
编写测试
编写好的测试用例要求
case名称明确
case设计中要考虑边界
好的单元测试完备⽽不重复
设计case,是基于意图的设计,而不是基于实现
善用setup,将通用的初始化进行整理
要明确测试意图,尤其对最可能出错、最有风险、逻辑最重、计算的地方进行用例覆盖
把被测函数分为几部分逻辑,针对每一块设计case
需要mock的,是调用外部资源、请求、数据的,或者较难实现的错误场景等。
对bug要分析,要写单测覆盖它
不会出错的,set/get,一句if的,内联的,逻辑很简单的,不用写单测
总纲
单元测试.png
这里原图可能看不清楚,我上传网盘吧。
标签: 单元测试
smarteng
人生就流星,虽然转瞬即逝,但也有永恒。
恰饭
分类
热门文章
- 使用Erlang的OTP框架创建应用
- php 使用curl模拟登录discuz以及模拟发帖
- 新浪微博错误代码解析
- 腾讯QQ、阿里旺旺、淘宝、MSN在线状态代码生成
- erlang程序设计笔记
- 《HTML 5与CSS 3权威指南》权威的HTML5与CSS3实战教程
- dedecms修改数据库密码配置文件
- 服务器优化小记--Etag和Expires
- 在PHP5中使用PHPMailer发送邮件
- PHP中冒号、endif、endwhile、endfor介绍
- PHP框架——ThinkPHP
- QQ登陆成功返回openId后与网站绑定
- Mediawiki的配置和修改方法
- 使用Golang的官方mock工具--gomock、mockgen
- 用yaf-codes-generator 生成代码
最新日志
- MacOs 电脑关闭/打开IPV6
- MySQL中datetime和timestamp的区别
- C++声明结构
- 如何保证数据库和缓存的一致性
- 优雅的golang日期时间处理库go-carbon
- API接口纪要
- 解析 Golang 测试(11)- 模糊测试
- 解析 Golang 测试(10)- 什么是好的单测
- 解析 Golang 测试(9)- 一篇文章搞懂 testify
- 解析 Golang 测试(8)- gomonkey 实战
- 解析 Golang 测试(7)- 如何针对 Redis 进行 Fake 测试
- 解析 Golang 测试(6)- 如何针对 MySQL 进行 Fake 测试
- 解析 Golang 测试(5)- MySQL 经典 mock driver—— sqlmock
- 解析 Golang 测试(4)- 一篇文章教你分清 Mock,Stub,Fake
- 解析 Golang 测试(3)- goconvey 实战
存档
- 2023年11月(1)
- 2023年10月(1)
- 2023年3月(2)
- 2023年2月(1)
- 2022年12月(1)
- 2022年9月(13)
- 2022年8月(5)
- 2022年7月(9)
- 2022年6月(2)
- 2022年5月(2)
- 2022年4月(1)
- 2022年3月(2)
- 2021年12月(1)
- 2021年11月(14)
- 2021年10月(2)
- 2021年9月(111)
- 2015年3月(1)
- 2014年5月(4)
- 2014年4月(18)
- 2014年1月(1)
- 2013年11月(2)
- 2013年7月(1)
- 2013年6月(1)
- 2013年3月(13)
- 2013年2月(3)
- 2013年1月(1)
- 2012年12月(8)
- 2012年11月(8)
- 2012年10月(1)
- 2012年9月(13)
- 2012年8月(4)
- 2012年6月(2)
- 2012年5月(10)
- 2012年4月(13)
- 2012年3月(9)
- 2012年2月(8)
- 2011年11月(1)
- 2011年8月(9)
- 2011年7月(8)
- 2011年6月(8)
- 2011年5月(7)
- 2011年4月(19)
- 2011年3月(15)
- 2011年2月(8)
- 2011年1月(9)
- 2010年12月(2)
- 2010年11月(2)
- 2010年10月(2)
- 2010年9月(8)
- 2010年8月(9)
- 2010年7月(1)
- 2010年6月(9)
- 2010年5月(5)
- 2010年1月(7)
- 2009年12月(21)
- 2009年11月(29)
- 2009年10月(100)
- 2009年8月(1)
- 2009年7月(15)
- 2009年6月(52)
标签
timestamp
datetime
time
awk
技术文章
SEM
营销
赚钱
go-zero
抓包
测试覆盖率
系统
hostname
goquery
mockgen
gomock
validator
urldecode
urlencode
redirect
context
port
pulsar
Consul
epoll
yaml
错误处理
code-review
xlsx
excel
c
读书
阅读
写作
生活
shen
统计
test
Module
mod
效率
无密码
天网
Future
video
computer
tmux
ce
Logrotate
supervisor
command
screen
rsa
java
markdown
测试
水平居中
error
brew
homebrew
http
nodejs
composer
工具
框架
gopath
gomod
golang
go
播放器
服务器
腾讯云
单元测试
爬虫
命令
emlog
replace
模型
PHP升级
阿里云
习惯
group_concat
SQL Server
PHPExcel
面试
单点登录
开源项目
tag
guid
yaf
md5
博客
微博
团队
Geolocation
Mac
客户端
网赚
豆瓣
编程语言
京东