单元测试
单元测试
编写一个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()测试成功")
}