久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

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

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

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

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

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

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

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

      go test 單元測試

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

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

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

      簡單例子:

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

      .├── 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í)行單元測試

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

      • -v

      -v 是參數(shù)會(huì)顯示每個(gè)用例的測試結(jié)果,顯示執(zhí)行的單測函數(shù),是否通過以及單測的時(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í)行包里面所有的單元測試文件

      只運(yùn)行指定的單測函數(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ù)制

      子測試

      就是在我們寫的單測函數(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 ")                 }         })}
      登錄后復(fù)制

      單獨(dú)調(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
      登錄后復(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中的單元測試(unit testing)

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

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

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

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

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

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