当前位置: 首页 > news >正文

Golang单元测试举例

1.第一个例子

cal.go 

package mainfunc addUpper(n int) int {res := 0for i := 1; i <= n; i++ {res += i}return res
}func getSub(n1 int, n2 int) int {return n1 - n2
}

cal_test.go

package main//测试文件名必须是_test.go结尾
//测试函数必须Test开头
import ("fmt""testing"
)// 编写要给测试用例,去测试addUpper是否正确
func TestAddUpper(t *testing.T) {//调用res := addUpper(10)if res != 55 {//输出错误信息,退出程序t.Fatalf("AddUpper(10)执行错误,期望值=%v,实际值=%v\n", 55, res)}//如果正确,输出日志t.Logf("AddUpper(10) 执行正确...")
}func TestHello(t *testing.T) {fmt.Println("TestHello被调用了")
}// 编写要给测试用例,去测试addUpper是否正确
func TestGetSub2(t *testing.T) {//调用res := getSub(10, 3)if res != 7 {t.Fatalf("getSub(10,3)执行错误,期望值=%v,实际值=%v\n", 7, res)}//如果正确,输出日志t.Logf("getSub(10,3) 执行正确...")
}

说明:再GoLand中,要运行测试哪个函数可以自行选择

测试文件名必须以_test.go结尾;

测试方法的开头必须是Testxxx() 

2.第二个例子,测试对象的序列化和反序列化

monster.go 

package test2import ("encoding/json""fmt""os"
)type Monster struct {Name  stringAge   intSkill string
}// 序列化对象
func (this *Monster) Store() bool {//先序列化data, err := json.Marshal(this)if err != nil {fmt.Println("marshal err=", err)return false}//保存到文件filePath := "e:/monster.ser"err = os.WriteFile(filePath, data, 0666)if err != nil {fmt.Println("write file err=", err)return false}return true
}// 反序列化对象
func (this *Monster) ReStore() bool {//1.从文件中读取序列化字符串filePath := "e:/monster.ser"data, err := os.ReadFile(filePath)if err != nil {fmt.Println("ReadFile err=", err)return false}//2.使用data []byte 反序列化err = json.Unmarshal(data, this)if err != nil {fmt.Println("Unmarshal err=", err)return false}return true
}

monster_test.go

package test2import ("fmt""testing"
)func TestStrore(t *testing.T) {//先创建一个Monstermonster := &Monster{Name:  "林动",Age:   20,Skill: "大荒芜经",}res := monster.Store()if !res {t.Fatalf("monster.Store()错误,希望为=%v 实际为=%v\n", true, res)}t.Logf("monster.Store() 测试成功")
}func TestReStore(t *testing.T) {//先创建一个Monster实例,不需要指定字段的值var monster = &Monster{}res := monster.ReStore()if !res {t.Fatalf("monster.ReStore() 错误,希望=%v 实际为=%v\n", true, res)}//进一步判断fmt.Printf("%v %v %v\n", monster.Name, monster.Age, monster.Skill)
}
=== RUN   TestReStore
林动 20 大荒芜经
--- PASS: TestReStore (0.00s)
PASS

http://www.lryc.cn/news/156660.html

相关文章:

  • 汽车以太网协议栈
  • 数学建模--二次规划型的求解的Python实现
  • Ansible-palybook学习
  • 服务注册与服务发现
  • RabbitMQ从入门到精通之安装、通讯方式详解
  • 植物大战僵尸植物表(二)
  • UML基础
  • C# void 关键字学习
  • OA与CRM与ORACLE
  • 【C++杂货铺】探索list的底层实现
  • NX/UG二次开发—Parasolid—PK_BODY_pick_topols
  • 【校招VIP】前端算法考点之大数据相关
  • Goland2023版新UI的debug模式调试框按钮功能说明
  • 【AIGC专题】Stable Diffusion 从入门到企业级应用0414
  • 汇编原理学习记录:物理地址=段地址*16+偏移地址
  • mysql-2:安装mysql
  • gin框架
  • Laravel 完整开源项目大全
  • Spring MVC @Controller和@RequestMapping注解
  • 软件架构之前后端分离架构服务器端高并发演进之路
  • 第4节-PhotoShop基础课程-Ps格式
  • C语言malloc函数学习
  • 从零开始学习deepsort目标追踪算法----原理和代码详解
  • 第三章 LInux多线程开发 3.1-3.5线程创建 终止 分离
  • 空间曲线的参数方程
  • 非华为机型如何体验HarmonyOS鸿蒙系统 刷写HarmonyOS鸿蒙GSI系统以及一些初步的bug修复
  • Flutter 生成小程序的混合 App 实践
  • 利用 Python-user-agents 解析 User_Agent
  • Java版企业电子招标采购系统源码Spring Cloud + Spring Boot +二次开发+ MybatisPlus + Redis
  • Mybatis如何给字段起别名?