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

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

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

    單元測試,是指對軟件中的最小可測試單元進行檢查和驗證

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

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

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

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

    go test 單元測試

    GO 語言里面的單元測試,是使用標準庫 testing

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

    • 導入 test 標準庫
    • 單測文件名,后面跟上_test
    • 單測文件中的函數(shù)名為 Test開頭,且參數(shù)必須是 t *testing.T

    簡單例子:

    寫一個簡單的例子,添加后綴和前綴

    .├── cal.go ├── cal_test.go ├── lll └── sub.go
    登錄后復制

    cal.go

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

    cal_test.go

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

    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}
    登錄后復制

    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)}
    登錄后復制

    執(zhí)行單元測試

    go test -v
    登錄后復制

    • -v

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

    運行結(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
    登錄后復制

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

    只運行指定的單測函數(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
    登錄后復制

    子測試

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

    咱們改造一下上述的 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 ")                 }         })}
    登錄后復制

    單獨調(diào)用子測試函數(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
    登錄后復制

    生成報告,計算覆蓋率

    • 生成覆蓋率報告文件

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

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

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

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

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

    UNI-APP開發(fā)(仿餓了么)開發(fā)課程:進入學習

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

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

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

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

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