Go語言單元測試

2021-10-09 13:00:34 字數 1510 閱讀 8915

go語言似乎是個偏執狂,犧牲了不必要的靈活性,帶來一些強制的程式設計風格和約定。比如:

無任何形式的makefile,模組就是目錄、包就是目錄、編譯配製就是目錄!

不光目錄被用上了,檔名還能指定用途。檔名字尾為_test.go的都是單元測試檔案,_linux32.go就是32位linux特定的**。

不光檔名被用上了,函式名還有特定用途。在單元測試檔案中,測試函式以test開頭。以大寫字母開頭的變數、型別和函式是外部可見的,小寫字母開頭的變數、型別和函式是外部不可見的。

類似的約定也不好說是go語言首創,在一些檔案格式中也有類似規範。但是我暫時不知道到有什麼其它程式語言對程式設計風格這麼帶強制性。

對於單元測試,假設有如下calc.go檔案:

package calc

func add(a,b int) int

func max(a,b int) (ret int)

return

}func min(a,b int) (ret int)

return

}

有如下測試**calc_test.go:

package calc

import (

"testing"

)type calctest struct

var addtests = calctest,

calctest,

calctest,

}func testadd(t *testing.t)

}}func testmax(t *testing.t)

}func testmin(t *testing.t)

}

執行go test 得到如下結果:

pass

ok _/home/liangdi/desktop/test/go/testing 0.008

在calc.go中設計乙個邏輯錯誤,把 func min(a,b int) ret int 改為:

func min(a,b int) (ret int)

return

}

執行go test的結果為:

--- fail: testmin (0.00 seconds)

calc_test.go:38: 100 is smaller than 300

fail

exit status 1

fail _/home/liangdi/desktop/test/go/testing 0.005s

阿里雲k8s實戰手冊 [阿里雲cdn排坑指南]cdn

ecs運維指南

devops實踐手冊

hadoop大資料實戰手冊

knative雲原生應用開發指南

oss 運維實戰手冊

雲原生架構***

zabbix企業級分布式監控系統原始碼文件

10g大廠面試題戳領

go單元測試

go本身提供了一套輕量級的測試框架。mytest工程下有兩個檔案 main.go package main func main func add a,b int intmain test.go package main import testing func testadd1 t testing.t...

Go單元測試

對包含網路請求和響應的函式進行單元測試需要我們模擬客戶端請求和服務端返回。以乙個登入模組為例,main.go檔案如下 其中的重點是利用 http.newrequest構造乙個虛擬的http get請求,再用httptest.newrecorder 建立http.responesewriter,模擬真...

Go單元測試

go單元測試 1.使用testing框架 1.1.go test 如果執行正確,無日誌.錯誤時,會輸出日誌 1.2.go test v 執行正確或錯誤都會輸出日誌 1.3.當出現錯誤時,可以使用t.fatalf 來格式化輸出錯誤資訊,並退出日誌 1.4.t.logf 方法可以輸出相應的日誌 1.5....