Golang 学习二十三(单元测试)

26 篇文章 0 订阅
25 篇文章 4 订阅


  在提交测试工程师代码前,先进行单元测试自检,没有问题,方可提交代码,对于模块或者函数需要自行写测试用例。

规则:

  1. 文件名必须以 _test.go 结尾。

  2. 如果是测试函数,必须以 Test 开头。

1. 函数测试

calc.go

package main

// 加法
func add(a,b int) int {
    return a + b
}

// 减法
func sub(a,b int) int {
    return a - b
}

calc_test.go

package main

import "testing"

// 必须是 Test 开头
func TestAdd(t *testing.T) {
    r := add(2,4)
    if r != 6 {
        // 测试异常抛出(类似于 fmt.Printf)
        // t.Fatalf("计算异常,原结果:%d,现结果:%d",6,r)
        t.Fatalf("add(2,4) err,expect:%d,actual:%d",6,r)
    }
    t.Logf("test is success")
}

func TestSub(t *testing.T) {
    r := sub(10,4)
    if r != 6 {
        t.Fatalf("sub(10,4) err,expect:%d,actual:%d",6,r)
    }
    t.Logf("test is success")
}

go testgo test -v 看测试信息

1651117927761

2. 结构体测试

student.go

package main

import (
	"encoding/json"
	"io/ioutil"
)

type student struct {
	Name string
	Sex string
	Age int
}

// 信息保存文件
func (s *student) Save() (err error) {
	// 生成 json 格式
	data,err := json.Marshal(s)	// 编码
	if err != nil {
		return
	}
	// 写入文件
	err = ioutil.WriteFile("stu.txt",data,0755)
	return
}

// 从文件读取信息
func (s *student) Load() (err error) {
	// 从文件读取
	data,err := ioutil.ReadFile("stu.txt")
	if err != nil {
		return
	}
	err = json.Unmarshal(data,s)	// 解码
	return
}

student_test.go

package main

import "testing"

func TestSave(t *testing.T) {
	// 结构体实例
	stu := &student{
		Name: "zhangsan",
		Sex: "男",
		Age: 18,
	}
	// 测试保存
	err := stu.Save()
	if err != nil {
		t.Fatalf("save stu failed,err:%v",err)
	}
}

// 测试信息获取
func TestLoad(t *testing.T) {
	// 保存
	stu := &student{
		Name: "lisi",
		Sex: "女",
		Age: 20,
	}
	err := stu.Save()
	if err != nil {
		t.Fatalf("save stu failed,err:%v",err)
	}
	// 加载
	stu2 := &student{}
	err2 := stu2.Load()
	if err2 != nil {
		t.Fatalf("load stu failed,err:%v",err2)
	}
	// 验证比较数据
	if stu.Name != stu2.Name {
		t.Fatal("stu name different")
	}
	if stu.Sex != stu2.Sex {
		t.Fatal("stu sex different")
	}
	if stu.Age != stu2.Age {
		t.Fatal("stu age different")
	}
}

运行结果:

D:\goproject\src\dev_code\test\main>go test -v
=== RUN   TestSave
--- PASS: TestSave (0.00s)
=== RUN   TestLoad
--- PASS: TestLoad (0.00s)
PASS
ok      dev_code/test/main      0.053s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值