單元測試

1.文件名_test結尾
2.函數名Test開頭
3.引入testing包
4.函數參數固定寫法 :t *testing.T


舉例:

單元測試
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 {
        t.Fatalf("add(2, 4) error, expect:%d, actual:%d", 6, r)
    }
    t.Logf("test add success")
}

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

測試命令:
go test -v (-v顯示更多信息)


舉例:
單元測試
student.go:

package main

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

type student struct {
    Name string
    Sex  string
    Age  int
}

func (p *student) Save() (err error) {
    data, err := json.Marshal(p)
    if err != nil {
        return
    }

    err = ioutil.WriteFile("C:/stu.dat", data, 0755)
    return
}

func (p *student) Load() (err error) {

    data, err := ioutil.ReadFile("C:/stu.dat")
    if err != nil {
        return
    }

    err = json.Unmarshal(data, p)
    return
}

student_test.go:

package main

import "testing"
import "time"

func TestSave(t *testing.T) {
    stu := &student{
        Name: "stu01",
        Sex:  "man",
        Age:  10,
    }

    err := stu.Save()
    if err != nil {
        t.Fatalf("save student failed, err:%v", err)
    }

}

func TestLoad(t *testing.T) {

    stu := &student{
        Name: "stu01",
        Sex:  "man",
        Age:  10,
    }
    err := stu.Save()
    if err != nil {
        t.Fatalf("save student failed, err:%v", err)
    }
    stu2 := &student{}
    time.Sleep(10 * time.Second)
    err = stu2.Load()
    if err != nil {
        t.Fatalf("load student failed, err:%v", err)
    }
    if stu.Name != stu2.Name {
        t.Fatalf("load student failed, name not equal")
    }
    if stu.Sex != stu2.Sex {
        t.Fatalf("load student failed, Sex not equal")
    }
    if stu.Age != stu2.Age {
        t.Fatalf("load student failed, Age not equal")
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章