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....