亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

在go中進行單元測試的案例分享

 更新時間:2024年01月16日 10:34:23   作者:coderyeah  
這篇文章主要介紹了使用Go進行單元測試的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

一. 基礎(chǔ)介紹

1. 創(chuàng)建測試文件

  • 測試文件通常與要測試的代碼文件位于同一個包中。
  • 測試文件的名稱應(yīng)該以 _test.go 結(jié)尾。例如,如果你要測試的文件是 math.go,那么測試文件可以命名為 math_test.go。

2. 編寫測試函數(shù)

  • 測試函數(shù)必須導入 testing 包。
  • 每個測試函數(shù)必須以 Test 開頭,后跟一個首字母大寫的名字,例如 TestSum 或 TestSubtract
  • 測試函數(shù)的簽名應(yīng)該接受一個指向 testing.T 類型的指針:func TestXxx(t *testing.T) { ... }。

3. 使用 t 對象進行斷言和日志記錄

  • t 對象用于記錄測試信息和控制測試流程。
  • 使用 t.Error 或 t.Errorf 報告失敗,但繼續(xù)執(zhí)行當前測試。
  • 使用 t.Fatal 或 t.Fatalf 報告失敗并立即終止當前測試。

4. 運行測試

  • 在命令行中,進入包含測試文件的目錄。
  • 執(zhí)行 go test 命令運行所有測試,或使用 go test -v 以詳細模式運行(打印每個測試的名字和運行狀態(tài))。
  • 使用 go test -run 加上正則表達式來運行特定的測試。例如,go test -run TestSum 僅運行名為 TestSum 的測試。

示例

假設(shè)有一個名為 math.go 的文件,其中定義了一個函數(shù) Sum

goCopy code// math.go
package math

func Sum(a, b int) int {
    return a + b
}

創(chuàng)建一個名為 math_test.go 的測試文件,其中包含以下內(nèi)容:

goCopy code// math_test.go
package math

import "testing"

func TestSum(t *testing.T) {
    total := Sum(5, 5)
    if total != 10 {
        t.Errorf("Sum was incorrect, got: %d, want: %d.", total, 10)
    }
}

然后在終端中運行 go test 或 go test -v 來執(zhí)行測試。

二. 綜合案例

結(jié)構(gòu)

monster.go

package test_case

import (
	"encoding/json"
	"fmt"
	"os"
)

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

// Store 將其序列化保存為文件
func (m *Monster) Store() bool {
	data, err := json.Marshal(m)
	if err != nil {
		fmt.Println("json parse Monster err ", err)
		return false
	}
	// 寫入文件
	err = os.WriteFile("d:/monster.txt", data, 0666)
	if err != nil {
		fmt.Println("write file err ", err)
		return false
	}
	return true
}

// ReStore 反序列化文件
func (m *Monster) ReStore() bool {
	data, err := os.ReadFile("d:/monster.txt")
	if err != nil {
		fmt.Println("read file err ", err)
		return false
	}
	// 將讀取的數(shù)據(jù)進行反序列化
	err = json.Unmarshal(data, m)
	if err != nil {
		fmt.Println("json Unmarshal err ", err)
		return false
	}
	return true
}

monster_test.go

package test_case

import (
    "testing"
)

func TestStore(t *testing.T) {
    monster := &Monster{
       Name:  "小狐貍",
       Age:   200,
       Skill: "魅惑",
    }
    res := monster.Store()
    if !res {
       t.Fatalf("TestStore fail,expected is %v,but got %v", true, res)
    }
    t.Logf("TestStore 測試通過")

}

func TestReStore(t *testing.T) {
    monster := &Monster{} //空的結(jié)構(gòu)體

    res := monster.ReStore() // 反序列化后結(jié)構(gòu)體就有數(shù)據(jù)
    if !res {
       t.Fatalf("TestReStore fail,expected is %v,but got %v", true, res)
    }

    if monster.Name != "小狐貍" {
       t.Fatalf("TestStore fail,expected monster.Name is %v,but got %v", "小狐貍", monster.Name)
    }
    t.Logf("TestStore 測試通過")
}

以上就是在go中進行單元測試的案例分享的詳細內(nèi)容,更多關(guān)于go中進行單元測試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go reflect 反射原理示例詳解

    Go reflect 反射原理示例詳解

    這篇文章主要為大家介紹了Go reflect 反射原理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • golang組件swagger生成接口文檔實踐示例

    golang組件swagger生成接口文檔實踐示例

    這篇文章主要為大家介紹了golang組件swagger生成接口文檔實踐示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • Go語言如何生成PDF文件實例探究

    Go語言如何生成PDF文件實例探究

    這篇文章主要為大家介紹了Go語言生成PDF文件的實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • GoLang之標準庫encoding/json包

    GoLang之標準庫encoding/json包

    本文主要介紹了GoLang之標準庫encoding/json包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • golang實現(xiàn)頁面靜態(tài)化操作的示例代碼

    golang實現(xiàn)頁面靜態(tài)化操作的示例代碼

    這篇文章主要介紹了golang實現(xiàn)頁面靜態(tài)化操作的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 詳解Go語言如何使用xorm實現(xiàn)讀取mysql

    詳解Go語言如何使用xorm實現(xiàn)讀取mysql

    xorm是go語言的常用orm之一,可以用來操作數(shù)據(jù)庫。本文就來和大家聊聊Go語言如何使用xorm實現(xiàn)讀取mysql功能,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-11-11
  • Go語言字符串處理庫strings包詳解

    Go語言字符串處理庫strings包詳解

    本文詳細介紹了Go語言中的strings庫的使用方法,包括字符串的查找、替換、分割、比較、大小寫轉(zhuǎn)換等操作,strings庫是Go語言中非常重要且功能豐富的標準庫,幾乎涵蓋了所有字符串處理的需求
    2024-09-09
  • golang配置管理神器Viper使用教程

    golang配置管理神器Viper使用教程

    這篇文章主要為大家介紹了golang配置管理神器Viper使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • 如何控制Go編碼JSON數(shù)據(jù)時的行為(問題及解決方案)

    如何控制Go編碼JSON數(shù)據(jù)時的行為(問題及解決方案)

    今天來聊一下我在Go中對數(shù)據(jù)進行 JSON 編碼時遇到次數(shù)最多的三個問題以及解決方法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-02-02
  • Go標準庫Flag庫和Log庫的使用

    Go標準庫Flag庫和Log庫的使用

    本文主要介紹了Go標準庫Flag庫和Log庫的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05

最新評論