golang--单元测试综合实例

实例说明:

(1)一个Monster结构体,字段Name,Age,Skill

(2)Monster有一个Store方法,可以将一个Monster对象序列化后保存在文件中;

(3)Monster有一个ReStore方法,可以从文件中读取数据并且反序列化;

(4)编译测试用例文件store_test.go,填写测试用例函数TestStore和TestReStore进行测试;

目录结构:

 

main.go

package main

import (
    "bufio"
    encoding/jsonfmtioos"
)

type monster struct {
    Name  string `json:name`
    Age   int    `json:age`
    Skill skill`
}

func (m *monster) store() []byte {
    data,err := json.Marshal(&m)
    if err != nil {
        fmt.Printf(序列化错误,error=%v,err)
    }
    return data
}

func (m *monster) reStore(data string) monster {
    err := json.Unmarshal([]byte(data),&反序列化错误,error=%vreturn *m
}

func writeFile(data string,path ) {
    file,err := os.OpenFile(path,os.O_WRONLY|os.O_CREATE,0666)
     nil {
        fmt.Println(写入到文件中错误,error= bufio.NewWriter(file)
    writer.WriteString(data)
    writer.Flush()
}

func readFile(path string)  {
    var str string
    var e error
    file,os.O_RDONLY,err)
    }
    defer file.Close()
    reader := bufio.NewReader(file)
    for {
        str,e = reader.ReadString('\n')
        if e == io.EOF {
            break
        }
        //如果要返回多个数据的话,可以在这里定义一个切片进行接收每一行的str,最后返回这个切片即可
    }
    这里实际上返回的是最后一行数据
     str
}

func main() {
    m := monster{
        Name:  孙悟空200七十二变 m.store()
    fmt.Println((data))

     writeFile(string(data),"test.txt")
    str := readFile(test.txt)

     mon monster
    mon = m.reStore(str)
    fmt.Println(mon)
}

main_test.go

testing
)

func TestStore(t *testing.T) {
    m := &monster{
        Name:   m.store()
    if string(data) == "" {
        t.Fatal(序列化失败)
    }
    t.Logf(序列化成功)
}
func TestReStore(t *testing.T) {
     m monster
    str := {\"name\":\"孙悟空\",\"age\":200,\"skill\":\"七十二变\"}
    data := m.reStore(str)
    fmt.Println(data)
    t.Logf(反序列化成功)
}

func TestWriteFile(t * m.store()
    writeFile(string(data),1)">)
    t.Log(存储成功)
}

func TestReadFile(t *testing.T) {
    data := readFile(if data == 读取失败)
    }
    t.Log(读取成功)
}

相关文章

类型转换 1、int转string 2、string转int 3、string转float ...
package main import s "strings" import...
类使用:实现一个people中有一个sayhi的方法调用功能,代码如...
html代码: beego代码:
1、读取文件信息: 2、读取文件夹下的所有文件: 3、写入文件...
配置环境:Windows7+推荐IDE:LiteIDEGO下载地址:http:...