亚洲最大看欧美片,亚洲图揄拍自拍另类图片,欧美精品v国产精品v呦,日本在线精品视频免费

  • 站長(zhǎng)資訊網(wǎng)
    最全最豐富的資訊網(wǎng)站

    一文搞懂GO中的單元測(cè)試(unit testing)

    單元測(cè)試,是指對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證

    單元就是人為規(guī)定的最小的被測(cè)功能模塊

    一般來(lái)說(shuō),要根據(jù)實(shí)際情況去判定其具體含義,如 C 語(yǔ)言中單元指一個(gè)函數(shù),Go 里面也單元也是一個(gè)函數(shù)

    單元測(cè)試是在軟件開發(fā)過(guò)程中要進(jìn)行的最低級(jí)別的測(cè)試活動(dòng),軟件的獨(dú)立單元將在與程序的其他部分相隔離的情況下進(jìn)行測(cè)試。

    單元測(cè)試,咱們平時(shí)也叫它單測(cè),平時(shí)開發(fā)的時(shí)候,也需要寫一些 demo 來(lái)測(cè)試我們的項(xiàng)目中的函數(shù)或者某個(gè)小功能【推薦:golang教程】

    go test 單元測(cè)試

    GO 語(yǔ)言里面的單元測(cè)試,是使用標(biāo)準(zhǔn)庫(kù) testing

    有如下簡(jiǎn)單規(guī)則:

    • 導(dǎo)入 test 標(biāo)準(zhǔn)庫(kù)
    • 單測(cè)文件名,后面跟上_test
    • 單測(cè)文件中的函數(shù)名為 Test開頭,且參數(shù)必須是 t *testing.T

    簡(jiǎn)單例子:

    寫一個(gè)簡(jiǎn)單的例子,添加后綴和前綴

    .├── cal.go ├── cal_test.go ├── lll └── sub.go
    登錄后復(fù)制

    cal.go

    package mainfunc Addprefix(str string) string {      return "hello_"+str}func Addsuffix(str string) string {      return str+"_good"}
    登錄后復(fù)制

    cal_test.go

    package mainimport "testing"func TestAddprefix(t *testing.T) {         Addprefix("xiaomotong")}func TestAddsuffix(t *testing.T) {         Addsuffix("xiaomotong")}
    登錄后復(fù)制

    sub.go

    package mainfunc MyAdd(a int, b int) int  {      if a+b > 10{         return 10     }      return a+b}func MySub(one int, two int) int{      if one - two < 0{         return 1     }      return one - two}
    登錄后復(fù)制

    sub_test.go

    package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) {     num := MyAdd(4 ,9)     fmt.Println(num)      num = MyAdd(4 ,2)     fmt.Println(num)}
    登錄后復(fù)制

    執(zhí)行單元測(cè)試

    go test -v
    登錄后復(fù)制

    • -v

    -v 是參數(shù)會(huì)顯示每個(gè)用例的測(cè)試結(jié)果,顯示執(zhí)行的單測(cè)函數(shù),是否通過(guò)以及單測(cè)的時(shí)候

    運(yùn)行結(jié)果如下

    === RUN   TestAddprefix --- PASS: TestAddprefix (0.00s)=== RUN   TestAddsuffix --- PASS: TestAddsuffix (0.00s)=== RUN   TestMyAdd 10 6 --- PASS: TestMyAdd (0.00s)PASS ok      my_new_first/golang_study/later_learning/gotest 0.002s
    登錄后復(fù)制

    在包目錄下執(zhí)行 go test ,會(huì)執(zhí)行包里面所有的單元測(cè)試文件

    只運(yùn)行指定的單測(cè)函數(shù)

    咱們可以這樣用:

    go test -run TestMyAdd -v

    結(jié)果如下:

    === RUN   TestMyAdd 10 6 --- PASS: TestMyAdd (0.00s)PASS ok      my_new_first/golang_study/later_learning/gotest 0.002s
    登錄后復(fù)制

    子測(cè)試

    就是在我們寫的單測(cè)函數(shù)中,調(diào)用 testing 包里的 Run 方法,跑子測(cè)試

    咱們改造一下上述的 sub_test.go

    package mainimport "testing"import "fmt"func TestMyAdd(t *testing.T) {     num := MyAdd(4 ,9)     fmt.Println(num)      num = MyAdd(4 ,2)     fmt.Println(num)}func TestMySub(t *testing.T) {         t.Run("one", func(t *testing.T) {                 if MySub(2, 3) != 1 {                         t.Fatal("cal error")                 }          })         t.Run("two", func(t *testing.T) {                 if MySub(3, 1) != 2 {                         t.Fatal(" error ")                 }         })}
    登錄后復(fù)制

    單獨(dú)調(diào)用子測(cè)試函數(shù),執(zhí)行 go test -run TestMySub/one -v

    === RUN   TestMySub=== RUN   TestMySub/one --- PASS: TestMySub (0.00s)     --- PASS: TestMySub/one (0.00s)PASS ok      my_new_first/golang_study/later_learning/gotest 0.003s
    登錄后復(fù)制

    生成報(bào)告,計(jì)算覆蓋率

    • 生成覆蓋率報(bào)告文件

    go test -v -covermode=count -coverprofile=cover.out

    • 使用 go tool 轉(zhuǎn)成 html 格式

    go tool cover -html=cover.out -o cover.html

    在瀏覽器中打開 html 文件,可以查看到如下報(bào)告

    一文搞懂GO中的單元測(cè)試(unit testing)

    UNI-APP開發(fā)(仿餓了么)開發(fā)課程:進(jìn)入學(xué)習(xí)

    圖中綠色的部分是已覆蓋,紅色的部分是未覆蓋,咱們的例子已經(jīng)全部覆蓋具體的函數(shù)功能

    go test 后面的指令,咱們也可以看幫助文檔

    一文搞懂GO中的單元測(cè)試(unit testing)

    很多公司都開始搞效能了,單測(cè),自動(dòng)化測(cè)試,CI/CD 都是要趕緊搞起來(lái)的,最好是做成一鍵發(fā)布一鍵回滾的。羨慕這些基礎(chǔ)設(shè)置都非常完善的地方,哈哈哈~

    贊(0)
    分享到: 更多 (0)
    網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)