Go语言中如何进行测试
生活随笔
收集整理的這篇文章主要介紹了
Go语言中如何进行测试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
主要講解在Go語言中如何進行代碼測試
?
1、調試和測試
????????????在程序開發中應該更多的注重測試而不是調試,即測試的優先級重于調試
2、傳統測試與表格驅動測試
????????傳統測試在大多數情況下使用代碼進行的單元測試,示例代碼如下:
????????????????
????????? ? 傳統測試的缺點:
- 測試數據與測試邏輯耦合在一起
- 出錯信息不準確
- 一旦一個數據出錯測試全部結束
????????表格驅動測試 就是在傳統測試的基礎上?對測試數據與測試邏輯相分離,數據像表格一樣單獨存儲,示例如下:
????????????
????? ? 在Go語言中一般采用表格驅動測試,其優點主要有:
- 分離測試數據與測試邏輯
- 擁有明確的錯誤信息
- 可以部分失敗
- Go語言的語法使我們更容易實現表格驅動測試
3、在Go語言中實現表格驅動測試
????? ? 注意事項:測試Go文件命名為:xxx_test.go,在測試Go文件中,測試方法使用大寫Test開頭,測試方法傳入參數為:*testing.T
????? ? 現在示例對勾股數方法進行表格驅動的單元測試 以及性能測試 ,代碼如下:
package mainimport ( "testing""math" ) //傳入兩個 int 類型數據 a、b,返回 返回 a2+b2 func Triangle(a, b int) int {var c intc = int(math.Sqrt(float64(a*a + b*b)))return c }//定義測試方法對上面的 方法進行測試 func TestTriangle(t *testing.T) {tests := []struct{ a, b, c int }{{3, 4, 5},{5, 12, 13},{8, 15, 17},{12, 35, 36},{30000, 40000, 5000},}for _, tt := range tests {if actual := Triangle(tt.a, tt.b); actual != tt.c {t.Errorf("Triangle(%d, %d); 實際結果: %d; 期望結果: %d",tt.a, tt.b, actual, tt.c)}}//輸出結果://=== RUN TestTriangle//--- FAIL: TestTriangle (0.00s)// 21_Test1_test.go:25: Triangle(12, 35); 實際結果: 37; 期望結果: 36// 21_Test1_test.go:25: Triangle(30000, 40000); 實際結果: 50000; 期望結果: 5000//FAIL }//對方法進行性能測試 func BenchmarkTriangle(b *testing.B) {for i:=0;i<b.N;i++ {if actual := Triangle(3,4); actual != 5 {b.Errorf("Triangle(%d, %d); 實際結果: %d; 期望結果: %d",3, 4, actual, 5)}}//輸出結果(在短時間內執行了 2000000000 次 測試,每次耗時 0.42 ns)://goos: windows//goarch: amd64//2000000000 0.42 ns/op//PASS}?
????????Goland 編譯器會 自動識別到?TestTriangle、BenchmarkTriangle 方法為測試方法,可以使其直接執行,針對性能測試,我們可以使用Go提供的 Go tool 工具查看是什么操作占用了過多性能。
轉載于:https://my.oschina.net/ruoli/blog/1816384
總結
以上是生活随笔為你收集整理的Go语言中如何进行测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从JS对象开始,谈一谈“不可变数据”和函
- 下一篇: Linux系统中的防火墙的实现:ipta