最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言基礎(chǔ)單元測試與性能測試示例詳解

 更新時間:2021年11月16日 17:13:58   作者:楓少文  
這篇文章主要為大家介紹了Go語言基礎(chǔ)單元測試與性能測試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步

概述

測試不是Go語言獨有的,其實在很多語言都有測試,例如:Go、Java、Python…

要想成為一名合格的大牛,這是程序員必須具備的一項技能,特別是一些大公司,這是加分的一項,主要有如下優(yōu)點:

代碼可以隨時測試,保證代碼不會產(chǎn)生錯誤

寫出更加高效的代碼

單元測試

格式:func TestXXX(t *testing.T)

//add.go
package cal
func Add(num1, num2 int) int {
	return num1 + num2
}
//mul.go
package cal
func Mul(num1, num2 int) int {
	return num1 * num2
}
//add_test.go
package cal
import (
	"testing"
)
func TestAdd(t *testing.T) {
	sum := Add(10, 20)
	if sum != 30 {
		t.Log("10+20=", sum)
	}
}
func TestMul(t *testing.T) {
	sum := Mul(10, 2)
	if sum != 20 {
    t.Error("10 * 2 =", sum)
	}
}

運行結(jié)果如下:

//單元測試命令行
$ go test add_test.go add.go mul.go
ok      command-line-arguments  0.072s
$ go test -v add_test.go add.go
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
=== RUN   TestMul
--- PASS: TestMul (0.00s)
PASS
ok      command-line-arguments  0.070s
//運行指定單元測試用例
$ go test -v -run TestAdd add_test.go add.go mul.go
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
PASS
ok      command-line-arguments  0.072s

代碼說明如下

第 1 行,在 go test后跟 add_test.go 件,表示測試這個文件里的所有測試用例。

第 2 行,顯示測試結(jié)果,ok 測試通過,command-line-arguments 用例需要用到的一個包名,0.069s表示測試花費的時間。

第 3 行,顯示在附加參數(shù)中添加了-v,可以讓測試時顯示詳細的流程。

第 4-7 行,表示開始運行名叫 TestAdd TestMul 用例。

第 4-7 行,表示已經(jīng)運行完 TestAdd TestMul試用例,PASS 表示測試成功。

第10行,表示運行指定的單元測試用例 主要加上-run 后面跟上你需要測試的函數(shù)(TestAdd)

問題

ok command-line-arguments (cached)

第一種:清除緩存 go clean -testcache

第二種:go test設(shè)置flags go test add_test.go add.go -count=1

注意

每個測試文件必須以 _test.go 結(jié)尾,不然 go test 不能發(fā)現(xiàn)測試文件

測試文件寫在同一個包,方便測試和后期的維護

每個測試文件必須導(dǎo)入 testing

功能測試函數(shù)必須以 Test 開頭,然后一般接測試函數(shù)的名字

testing.T 提供了幾種日志輸出方法

方 法 描述
Log 打印日志,同時結(jié)束測試
Logf 格式化打印日志,同時結(jié)束測試
Error 打印錯誤日志,同時結(jié)束測試
Errorf 格式化打印錯誤日志,同時結(jié)束測試
Fatal 打印致命日志,同時結(jié)束測試
Fatalf 格式化打印致命日志,同時結(jié)束測試

直接打?。?code>Log Error Fatal

格式化打?。?code>Logf Errorf Fatalf

性能測試

基本使用

格式:func BenchmarkXxx(*testing.B)

  //benchmark_test.go
    package cal
    import (
	"fmt"
    "testing"
  )
    func BenchmarkHello(b *testing.B) {
    	for i := 0; i < b.N; i++ {
    		fmt.Sprintf("hello")
    	}
    }

測試結(jié)果如下:

$ go test -v -bench="." benchmark_test.go
goos: windows
goarch: amd64
BenchmarkHello-4        20000000                93.7 ns/op
PASS
ok      command-line-arguments  2.061s

代碼如下說明:

第 1 行 -bench="." 表示運行 benchmark_test.go 文件里面全部的測試,其實和-run一樣【 -bench regexp 是可以接收一個正則,如果要運行所以的基準(zhǔn)測試,請使用-bench. or -bench=.'.

第 2 行 goos 表示系統(tǒng)是 windows

第 3 行 goarch 表示 操作系統(tǒng)構(gòu)架是amd64

第 4 行 BenchmarkHello-4 表示 測試名稱 , 20000000測試的次數(shù) , 93.7 ns/op表示表示每一個操作耗費多少時間(納秒)

自定義測試時間

通過-benchtime參數(shù)可以自定義測試時間,例如:

$ go test -v -benchtime=2s  -bench=. benchmark_test.go
goos: windows
goarch: amd64
BenchmarkHello-4        30000000                85.1 ns/op
PASS
ok      command-line-arguments  2.714s

當(dāng)你不設(shè)置-benchtime t時,默認值是1秒

testing.B 提供了幾種方法【testing.B擁有testing.T的全部接口】

方法 描述
StartTimer() 啟動計時
StopTimer() 停止計時
ResetTimer 重置計時
SetBytes() 設(shè)置處理字節(jié)數(shù)
ReportAllocs() 報告內(nèi)存信息
runN(n int) 運行一個基準(zhǔn)函數(shù)

go test里面還有很多的flags表示 例如:-parallel n -cover -vet list -parallel n

以上就是Go語言基礎(chǔ)單元測試與性能測試示例詳解的詳細內(nèi)容,更多關(guān)于Go語言單元測試性能測試的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Go語言實現(xiàn)ssh&scp的方法詳解

    Go語言實現(xiàn)ssh&scp的方法詳解

    這篇文章主要為大家詳細介紹了如何利用Go語言實現(xiàn)ssh&scp,文中的示例代碼講解詳細,具有一定的參考價值,感興趣的小伙伴可以了解一下
    2022-10-10
  • golang使用grpc+go-kit模擬oauth認證的操作

    golang使用grpc+go-kit模擬oauth認證的操作

    這篇文章主要介紹了golang使用grpc+go-kit模擬oauth認證的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 一文詳解Go中方法接收器的選擇

    一文詳解Go中方法接收器的選擇

    許多 Go 初學(xué)者在方法接收器的選擇上可能會感到困惑,不知道該選擇值接收器還是指針接收器。本文將會對方法接收器進行介紹,并給出如何選擇正確方法接收器的指導(dǎo)建議,希望對大家有所幫助
    2023-04-04
  • Go語言實現(xiàn)類似c++中的多態(tài)功能實例

    Go語言實現(xiàn)類似c++中的多態(tài)功能實例

    Go本身不具有多態(tài)的特性,不能夠像Java、C++那樣編寫多態(tài)類、多態(tài)方法。但是,使用Go可以編寫具有多態(tài)功能的類綁定的方法。下面來一起看看吧
    2016-09-09
  • Golang中的占位符詳解

    Golang中的占位符詳解

    這篇文章主要給大家詳細總結(jié)了Golang中的占位符用法,文章通過代碼示例介紹的非常詳細,對我們學(xué)習(xí)Golang占位符有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • go grpc高級用法

    go grpc高級用法

    RPC是遠程過程調(diào)用,可以像調(diào)用本地服務(wù)一樣取調(diào)用遠程服務(wù),本文主要介紹了go grpc高級用法,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • GoLang切片相關(guān)問題梳理講解

    GoLang切片相關(guān)問題梳理講解

    這篇文章主要介紹了GoLang切片相關(guān)的七個問題,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • 簡單高效!Go語言封裝二級認證功能實現(xiàn)

    簡單高效!Go語言封裝二級認證功能實現(xiàn)

    本文將介紹如何使用Go語言封裝二級認證功能,實現(xiàn)簡單高效的用戶認證流程,二級認證是一種安全措施,要求用戶在登錄后進行額外的身份驗證,以提高賬戶安全性,
    2023-10-10
  • Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法

    Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法

    這篇文章主要介紹了Go語言實現(xiàn)冒泡排序、選擇排序、快速排序及插入排序的方法,以實例形式詳細分析了幾種常見的排序技巧與實現(xiàn)方法,非常具有實用價值,需要的朋友可以參考下
    2015-02-02
  • Go語言字符串高效拼接的實現(xiàn)

    Go語言字符串高效拼接的實現(xiàn)

    這篇文章主要介紹了Go語言字符串高效拼接的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02

最新評論

岱山县| 绵竹市| 义马市| 天祝| 营山县| 康保县| 龙南县| 桂林市| 大姚县| 呼和浩特市| 宜城市| 武鸣县| 万载县| 惠安县| 建始县| 昂仁县| 红河县| 小金县| 阿克陶县| 中阳县| 桓仁| 锡林浩特市| 勃利县| 阿拉善左旗| 出国| 临沧市| 江孜县| 通山县| 育儿| 宾川县| 团风县| 新竹县| 垫江县| 信丰县| 姚安县| 丰县| 包头市| 桓台县| 揭西县| 宜兴市| 汉中市|