




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一文详解Go语言单元测试的原理与使用目录前言为什么要引用单元测试类单元测试基本介绍优点Testing规范基本使用Golang运行命令行案例
前言
为什么要引用单元测试类
传统方法的缺点分析
不方便,我们需要在main函数中去调用,这样就需要去修改main函数,如果现在项目正在运行,就可能去停止项目
不利于管理,因为当我们测试多个函数或者多个模块时,都需要写在main函数,不利于我们管理和清晰我们的思路
单元测试基本介绍
Go语言中自带有一个轻量级的测试框架testing和自带的gotest命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例
优点
确保每个函数是可运行,并且运行结果是正确的确保写出来的代码性能是好的单元测试能及时的发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决,而性能测试的重点在于发现程序设计的一些问题,让程序能够在高并发的情况下还能保持稳定
Testing规范
1.测试用例文件名必须以_test.go结尾
2.测试用例函数必须以Test开头,一般来说就是Test+被测试的函数名
3.测试用例函数的形参类型必须是*testing.T
4.一个测试用例文件中,可以由多个测试用例函数
5.当出现错误使,可以使用t.Fatalf来格式化输出错误信息,并退出程序
6.t.Logf方法可以输出相应的日志
7.测试用例函数,并没有放在main函数中,但是却执行了main函数
8.pass表示测试用例运行成功,Fail表示测试用例运行失败
9.测试单个文件,一个要带上被测试的源文件
gotest-vcal_test.gocal.go
10.测试单个方法
gotest-v-test.run函数名
基本使用
cal.go
packagemain
funcadd(nint)(int){
varsumint
fori:=1;ii++{
sum+=i
returnsum
cal_test.go
packagemain
import"testing"
//函数名规范Test+要测试的函数名(t*testing)
funcTestAdd(t*testing.T){
res:=add(9)
if(res!=55){
t.Fatalf("add(10)执行错误,期望值=%v实际值=%v\n",55,res)
t.Logf("执行正确!!")
Golang运行
命令行
案例
monster.go
packagemonster
import(
"encoding/json"
"fmt"
"io/ioutil"
typeMonsterstruct{
Namestring
Ageint
Skillstring
func(this*Monster)Store()bool{
data,err:=json.Marshal(this)
iferr!=nil{
fmt.Println("err=",err)
returnfalse
filename:="f:/test.ser"
err2:=ioutil.WriteFile(filename,data,0666)
iferr2!=nil{
fmt.Println("err=",err2)
returnfalse
returntrue
func(this*Monster)ReStore()bool{
filename:="f:/test.ser"
reader,err2:=ioutil.ReadFile(filename)
iferr2!=nil{
fmt.Println("err=",err2)
returnfalse
err:=json.Unmarshal(reader,this)
iferr!=nil{
fmt.Println("err=",err)
returnfalse
returntrue
}
monster_test.go
packagemonster
import(
"fmt"
"testing"
funcTestStore(t*testing.T){
monster:=Monster{
Name:"张三",
Age:18,
Skill:"打游戏",
flag:=monster.Store()
if!flag{
t.Fatalf("monster.Store()错误,期望为%v,实际为%v",true,flag)
t.Logf("monster.Store()测试成功")
funcTestRestore(t*testing.T){
varmonster=Monster{}
flag:=monster.ReStore()
if!flag{
t.Fatal
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- ui外包合同范例
- 个人服装代工合同范例
- 幼儿园安全专项整顿工作总结模版
- 产科的医院感染管理
- 医疗大数据驱动的德阳城市居民健康管理服务创新
- 企业健康管理的大数据应用与创新实践
- 专业技术团队的管理与建设研究
- 公司买断合同范例
- 医疗AI临床应用的商业化路径与挑战
- 医疗设备采购与供应的智能化管理研究
- 网络表情包的流行趋势分析-全面剖析
- 2025-2030中国非调质钢市场供需状况与未来发展战略规划研究研究报告
- 2025年四川省自然资源投资集团有限责任公司招聘笔试参考题库含答案解析
- 2025重庆机场集团限公司公开招聘46人易考易错模拟试题(共500题)试卷后附参考答案
- 2025年浙江省宁波市一模科学试卷
- 《Python数据可视化》全套教学课件
- 河北省2025年普通高中学业水平选择性考试·调研卷I语文+答案
- 河南省南阳市六校2024-2025学年高二下学期4月期中考试语文试卷(图片版含答案)
- 通讯迁改合同协议
- 泰语高级测试题及答案
- 土地合同转让三方协议书
评论
0/150
提交评论