Go程式設計學習第十一天

2021-10-12 19:53:22 字數 1964 閱讀 2211

在日常開發中,我們通常需要針對現有的功能進行單元測試,以驗證開發的正確性。 在go標準庫中有乙個叫做testing的測試框架,可以進行單元測試,命令是go test ***

現在假設現在需求是:完成兩個複數相加,我們只需要乙個函式便可以完成該任務。

在開發中,我們需要對該函式進行功能測試,如何快速進行單元測試呢?

滑鼠放在函式上右鍵,選擇go:generate unit tests for function即可生成file_test.go檔案

若需要列印log資訊,執行go test ***_test.go -v單測覆蓋率,覆蓋率可以簡單理解為進行單元測試mock的時候,能夠覆蓋的**行數佔總**行數的比率,當然是高一點要好些。可以通過-cover指定,go test ***_test -v -cover

以上方法均為**驅動測試,原始碼為

tests :=

struct

, b: complex,}

, want:

&complex,}

,}

基準測試函式名字必須以benchmark開頭,**在***_test.go中

**如下(示例):

func

benchmarkcomplex

(t *testing.b)

}

執行:go test -benchmem -run=. -bench=.進行測試

go get -u github.com/golang/mock/mockgeneg:有如下介面:

type db inte***ce

欲通過get介面返回對應的value,建立如下函式

func

getvalue

(db db, key int)(

string

,error

)return value,

nil}

測試函式正確與否,但是函式內呼叫了get介面,通過該介面進行mock

mockgen -source=db.

go-destination=db_mock.go-

package

=db

在單元測試中進行go mock

func

testgetvalue

(t *testing.t)

else

}

直接替換為想要的函式完成api測試,安裝庫:go get github.com/bouk/monkey

func

testgetvalue1

(t *testing.t)

)if v, err :=

getvalue

(h,1

); err !=

nilelse

}

1安裝:go get github.com/smartystreets/goconvey

使用convey進行單測

func

testspec

(t *testing.t))}

)})}

Linux學習第十一天

一 昨日回顧 1 訊號處理sigaction 2 使用sigaction如何實現不斷重入效果?struct sigaction act act.sa flags sa siginfo sa nodefer 3 想在2號訊號的處理流程過程中,遮蔽3號訊號 struct sigaction act ac...

UnixC第十一天

回憶昨天內容 一 訊號阻塞 sigprocmask 2 sigset t 訊號阻塞和訊號忽略的區別 可靠訊號 不可靠 訊號丟失 二 獲取程序的未決訊號集 從未決訊號集中找未決訊號 sigpending 2 什麼是未決訊號?三 訊號從產生到處理的整個過程 四 system v ipc 訊息佇列 獲取乙...

第十一天作業

第一題 import time import random deffoo print 開始執行。time.sleep random.uniform 1,3 print 執行完畢 return 都結束了 print foo 第二題 import time import random deffoo pr...