成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Golang單元測試詳解:單元測試的基本使用方法

開發 前端
在 Go 項目的源代碼目錄下創建一個新的文件(和被測代碼文件在同一個包),以 _test.go 為后綴名。例如,要測試net包中 dial.go 中的方法,在 net 包中創建一個名字為 dial_test.go 文件。

Golang 單元測試

Golang 中的單元測試是使用標準庫 testing 來實現的,編寫一個單元測試是很容易的:

  • 創建測試文件:在 Go 項目的源代碼目錄下創建一個新的文件(和被測代碼文件在同一個包),以 _test.go 為后綴名。例如,要測試net包中 dial.go 中的方法,在 net 包中創建一個名字為 dial_test.go 文件。
  • 導入 testing 包:在測試文件中導入testing包,以使用相關的的函數和工具。
  • 編寫測試函數:在測試文件中,編寫一個以 Test 為前綴的函數,后面跟上一個或多個字符或字符組合來標識測試用例的名稱(一般使用被測的函數名稱),參數必須是 t *testing.T。
  • 編寫測試代碼:如果認為測試不通過,當被測程序功能與預期不符,調用 t.Error 或 t.Errorf 方法記錄錯誤;如果出現了使測試無法繼續進行的錯誤,調用tFatal 和 t.Fatalf;如果測試函數體正常運行結束,沒有異常,則測試通過。

以 json 格式校驗工具

https://github.com/luduoxin/json-validator-go 為例,validator包中的 scanner.go 文件中的關鍵函數 Valid 用于校驗給定字符串是否 json 格式,對應的單元測試文件為 scanner_test.go,里面的測試函數為 TestValid。scanner_test.go 的源代碼如下:

package validator

import "testing"

var validTests = []struct {
	data string
	ok   bool
}{
	{`foo`, false},
	{`}{`, false},
	{`{]`, false},
	{`123`, false},
	{`123.5`, false},
	{`0.5`, false},
	{`true`, false},
	{`false`, false},
	{`null`, false},
	{`[1,2,3]`, false},
	{`["a","b","c"]`, false},
	{`{"foo":bar}`, false},
	{`[{"foo":"bar"},]`, false},
	{`{}`, true},
	{`[]`, true},
	{`[{}]`, true},
	{`{"foo":"bar"}`, true},
	{`{"foo":"bar","bar":{"baz":["qux"]}}`, true},
	{`[{"a":"[\"c\":\"d\"]"}]`, true},
	{`[{"a":[]}]`, true},
	{` {"a":"b"}`, true},
	{` {"a":"b"} `, true},
	{`{"a":"b"} `, true},
	{`{"a": "b"} `, true},
}

func TestValid(t *testing.T) {
	for _, tt := range validTests {
		if ok := Valid([]byte(tt.data)); ok != tt.ok {
			t.Errorf("Valid(%#q) = %v, want %v", tt.data, ok, tt.ok)
		}
	}
}

這個源代碼相關來說比較復雜,因為測試的數據種類比較多,如果是只想簡單測試一下,代碼如下:

package validator

import "testing"

func TestValid(t *testing.T) {
	str := `{"a": "b"}`
	if ok := Valid([]byte(str)); !ok {
		t.Errorf("Valid(%#q) = %v, want %v", str, ok, true)
	}
}

運行單元測試用例

使用 go test 命令可以運行單元測試用例,使用方法如下:

# 執行當前目錄下的全部測試用例,不遞歸子目錄中的測試用例
go test .
# 執行當前目錄下的全部測試用例,遞歸子目錄中的測試用例
go test ./...
# 執行當前目錄下的全部測試用例并顯示測試過程中的日志內容,不遞歸子目錄中的測試用例
go test -v .
# 執行當前目錄下的全部測試用例并顯示測試過程中的日志內容,遞歸子目錄中的測試用例
go test -v ./...
# 執行指定的測試用例
go test -v . -test.run '^TestValid$'

啟動命令行,切換到 json-validator-go 項目的 validator 文件夾下,運行全部測試用例:

$ go test -v .
=== RUN   TestValid
--- PASS: TestValid (0.00s)
PASS
ok      github.com/luduoxin/json-validator-go/validator

運行指定測試用例 TestValid :

$ go test -v . -test.run '^TestValid$'
=== RUN   TestValid
--- PASS: TestValid (0.00s)
PASS
ok      github.com/luduoxin/json-validator-go/validator 
責任編輯:姜華 來源: 今日頭條
相關推薦

2024-10-16 16:09:32

2017-01-14 23:42:49

單元測試框架軟件測試

2011-05-16 16:52:09

單元測試徹底測試

2017-01-16 12:12:29

單元測試JUnit

2017-01-14 23:26:17

單元測試JUnit測試

2017-03-23 16:02:10

Mock技術單元測試

2009-09-01 10:20:06

protected方法單元測試

2009-12-23 15:03:52

WPF單元測試

2012-05-17 09:09:05

Titanium單元測試

2013-06-04 09:49:04

Spring單元測試軟件測試

2021-09-02 15:29:42

鴻蒙HarmonyOS應用

2020-08-18 08:10:02

單元測試Java

2010-01-15 14:10:42

C++單元測試

2011-07-04 18:16:42

單元測試

2020-05-07 17:30:49

開發iOS技術

2021-05-05 11:38:40

TestNGPowerMock單元測試

2022-05-12 09:37:03

測試JUnit開發

2011-06-20 17:25:02

單元測試

2009-06-02 14:24:32

Hibernate單元測試HSQLDB

2010-03-04 15:40:14

Python單元測試
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品三区| a级黄色片视频 | 精品日韩一区二区 | 国产片侵犯亲女视频播放 | 中文字幕1区| 亚洲欧美综合精品久久成人 | 一道本视频 | 日韩在线欧美 | 久久精品久久久久久 | 免费在线播放黄色 | 综合激情av | 亚洲欧美激情精品一区二区 | 国产欧美性成人精品午夜 | 一区观看| 一区二区三区国产好的精 | 久久蜜桃av一区二区天堂 | 欧美精品中文字幕久久二区 | 成人片网址| 夜夜夜操 | 懂色av一区二区三区在线播放 | 欧美国产视频 | 国产91丝袜在线熟 | 日韩在线视频一区二区三区 | 91精品国产综合久久久久久丝袜 | 国产成人福利 | 亚洲视频中文字幕 | 中文字幕在线视频网站 | 天天激情综合 | 亚洲永久入口 | 一级中国毛片 | 国产成人网 | 九九伊人sl水蜜桃色推荐 | 免费观看一级毛片 | 蜜桃视频成人 | 国产精品亚洲视频 | 韩日有码 | 国产精品综合一区二区 | 国产一区二区精品在线观看 | 日韩国产欧美一区 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 久久国产欧美一区二区三区精品 |