日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Go语言中如何进行测试

發(fā)布時(shí)間:2025/4/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go语言中如何进行测试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

主要講解在Go語(yǔ)言中如何進(jìn)行代碼測(cè)試

?

1、調(diào)試和測(cè)試

????????????在程序開(kāi)發(fā)中應(yīng)該更多的注重測(cè)試而不是調(diào)試,即測(cè)試的優(yōu)先級(jí)重于調(diào)試

2、傳統(tǒng)測(cè)試與表格驅(qū)動(dòng)測(cè)試

????????傳統(tǒng)測(cè)試在大多數(shù)情況下使用代碼進(jìn)行的單元測(cè)試,示例代碼如下:

????????????????

????????? ? 傳統(tǒng)測(cè)試的缺點(diǎn):

  • 測(cè)試數(shù)據(jù)與測(cè)試邏輯耦合在一起
  • 出錯(cuò)信息不準(zhǔn)確
  • 一旦一個(gè)數(shù)據(jù)出錯(cuò)測(cè)試全部結(jié)束

????????表格驅(qū)動(dòng)測(cè)試 就是在傳統(tǒng)測(cè)試的基礎(chǔ)上?對(duì)測(cè)試數(shù)據(jù)與測(cè)試邏輯相分離,數(shù)據(jù)像表格一樣單獨(dú)存儲(chǔ),示例如下:

????????????

????? ? 在Go語(yǔ)言中一般采用表格驅(qū)動(dòng)測(cè)試,其優(yōu)點(diǎn)主要有:

  • 分離測(cè)試數(shù)據(jù)與測(cè)試邏輯
  • 擁有明確的錯(cuò)誤信息
  • 可以部分失敗
  • Go語(yǔ)言的語(yǔ)法使我們更容易實(shí)現(xiàn)表格驅(qū)動(dòng)測(cè)試

3、在Go語(yǔ)言中實(shí)現(xiàn)表格驅(qū)動(dòng)測(cè)試

????? ? 注意事項(xiàng):測(cè)試Go文件命名為:xxx_test.go,在測(cè)試Go文件中,測(cè)試方法使用大寫Test開(kāi)頭,測(cè)試方法傳入?yún)?shù)為:*testing.T

????? ? 現(xiàn)在示例對(duì)勾股數(shù)方法進(jìn)行表格驅(qū)動(dòng)的單元測(cè)試 以及性能測(cè)試 ,代碼如下:

package mainimport ( "testing""math" ) //傳入兩個(gè) int 類型數(shù)據(jù) a、b,返回 返回 a2+b2 func Triangle(a, b int) int {var c intc = int(math.Sqrt(float64(a*a + b*b)))return c }//定義測(cè)試方法對(duì)上面的 方法進(jìn)行測(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); 實(shí)際結(jié)果: %d; 期望結(jié)果: %d",tt.a, tt.b, actual, tt.c)}}//輸出結(jié)果://=== RUN TestTriangle//--- FAIL: TestTriangle (0.00s)// 21_Test1_test.go:25: Triangle(12, 35); 實(shí)際結(jié)果: 37; 期望結(jié)果: 36// 21_Test1_test.go:25: Triangle(30000, 40000); 實(shí)際結(jié)果: 50000; 期望結(jié)果: 5000//FAIL }//對(duì)方法進(jìn)行性能測(cè)試 func BenchmarkTriangle(b *testing.B) {for i:=0;i<b.N;i++ {if actual := Triangle(3,4); actual != 5 {b.Errorf("Triangle(%d, %d); 實(shí)際結(jié)果: %d; 期望結(jié)果: %d",3, 4, actual, 5)}}//輸出結(jié)果(在短時(shí)間內(nèi)執(zhí)行了 2000000000 次 測(cè)試,每次耗時(shí) 0.42 ns)://goos: windows//goarch: amd64//2000000000 0.42 ns/op//PASS}

?

????????Goland 編譯器會(huì) 自動(dòng)識(shí)別到?TestTriangle、BenchmarkTriangle 方法為測(cè)試方法,可以使其直接執(zhí)行,針對(duì)性能測(cè)試,我們可以使用Go提供的 Go tool 工具查看是什么操作占用了過(guò)多性能。

轉(zhuǎn)載于:https://my.oschina.net/ruoli/blog/1816384

總結(jié)

以上是生活随笔為你收集整理的Go语言中如何进行测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。