单元测试

单元测试

编写一个Monster结构体,字段Name,Age,Skill

给Monster绑定一个方法store,可以将一个 Monster变量,序列化后的结果保存到文件中去

给Monster绑定一个ReStore,可以将一个序列化的Monster,从文件中读取,并将反序列化Monster对象,检查反序化是否正确

编写测试用例文件sotre_test.go,编写测试用例函数,TestStore和TestRetore进行测试

test/monster.go
package test

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

type Monster struct {

	Name string
	Age int
	Skill string


}
//绑定两个方法,Store,将Monster变量,序列化后保存到文件中,
func (this *Monster) Store() bool{
	//先序列化
	data,err := json.Marshal(this)
	if err !=nil{
		fmt.Println(err)
		return false
	}
	//保存到我呢见
	filePath := "C:\\Users\\小子\\Desktop\\面向对象\\test\\monster.ser"
	err = ioutil.WriteFile(filePath,data,0666)
	if err !=nil{
		fmt.Println("writer file err=",err)
		return false
	}
	return true
}
//给Monster绑定一个ReStore,可以将一个序列化的Monster,从文件中读取,并将反序列化Monster对象,检查反序化是否正确
func (this *Monster) ReStore() bool{
	//先从文件中读取序列化的字符串
	filePath := "C:\\Users\\小子\\Desktop\\面向对象\\test\\monster.ser"
	data,err :=ioutil.ReadFile(filePath)
	if err !=nil{
		fmt.Println("reader file err=",err)
		return false
	}
	//使用读取data []byte,进行反序列化
	err =json.Unmarshal(data,this)
	if err != nil {
		fmt.Println("Unmarshal file err=",err)
		return false
	}
	return true

}

test/monster_test.go
package test

import (
	"testing"
)
//用例测试,对Store方法
func TestMonster_Store(t *testing.T) {
	//创建一个Monster
	monster :=Monster{Name: "小写",Age: 18,Skill: "三味真火"}
	res := monster.Store()
	if !res {
		t.Fatal("monster.Store() 错误,希望是=,实际=",true,res)

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

}


func TestMonster_ReStore(t *testing.T) {
	//先创建一个Monster实例,不需要指定字段的值
	var monster Monster
	monster.ReStore()
	res := monster.ReStore()
	if !res {
		t.Fatal("monster.ReStore() 错误,希望是=,实际=",true,res)

	}
	if monster.Name != "小写" {
		t.Fatal("monster.ReStore() 错误,希望是=,实际=",true,res)
	}
	t.Logf("monster.ReStore()测试成功")

}
posted @ 2021-02-06 23:14  小子,你摊上事了  阅读(35)  评论(0编辑  收藏  举报