Golang 程序测试框架

本文介绍了如何使用Go语言进行单元测试,包括测试用例的命名规范、测试函数的编写以及测试命令的执行。示例展示了Person类型的方法Store和ReStore的测试,确保数据的序列化和反序列化功能正常工作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注意事项

  1. 测试用例文件名必须以_test.go结尾,如:person_test.go

  2. 测试用例函数必须以Test开头,比如person_test.go文件中的TestReStore

  3. 测试函数的形参必须是t *testing.T

  4. 一个测试用例文件中,可以有多个测试用例函数

  5. 如果要测试单个文件一定要带上被测试的源文件

    go test -v person_test.go cal.go

  6. 测试单个方法

    go test -v -test.run TestReStore

测试命令:进入到对应目录,输入go test -v

文件名:person.go

package model

import(
	//"fmt"
	"encoding/json"
	"io/ioutil"
)
/*首字母小写,引入后不能直接使用*/
type Person struct{
	Name string 
	Age int 
	Skill string
}

//序列化存储
func (this * Person)Store() bool {
	data,err := json.Marshal(this)
	if err != nil {
		return false
	}

	filePath := "F:/Go/src/gocode/project_01/b.txt"
	err = ioutil.WriteFile(filePath,data,0666)
	if err != nil {
		return false
	}

	return true

}

//读取反序列化内容
func (this * Person)ReStore()bool{
	filePath := "F:/Go/src/gocode/project_01/b.txt"
	data,err := ioutil.ReadFile(filePath)
	if err != nil {
		return false
	}

	err = json.Unmarshal(data,this)
	if err != nil {
		return false
	}

	return true
}

文件名:person_test.go

package model

import(
	"testing"
)

func TestStore(t *testing.T){
	person := &Person{
		Name:"ywh",
		Age:21,
		Skill:"music",
	}

	res := person.Store()
	if !res {
		t.Fatalf("model.Store() 错误,希望为=%v 实际为=%v",true,res)
	}

	t.Logf("model.Store() 测试成功")
}

func TestReStore(t * testing.T){
	var person = &Person{}
	res := person.ReStore()
	if !res {
		t.Fatalf("model.ReStore() 错误,希望为=%v 实际为=%v",true,res)
	}

	if person.Name != "ywh"{
		t.Fatalf("model.ReStore() 错误,希望为=%v 实际为=%v","ywh",person.Name)
	}

	t.Logf("model.ReStore() 测试成功")
}

输出:

=== RUN   TestStore
    person_test.go:19: model.Store() 测试成功
--- PASS: TestStore (0.00s)
=== RUN   TestReStore
    person_test.go:33: model.ReStore() 测试成功
--- PASS: TestReStore (0.00s)
PASS
ok      gocode/project_01/model 0.023s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值