go語言中單元測試的總結

1、傳統的方式對代碼測試

在文件中建立一個main的函數git

  • 一、傳統方式的寫法github

    package main
    
    import "fmt"
    
    // 定義一個求和的方法
    func sum(n int) int {
        res := 0
        for i := 0; i <= n; i++ {
            res += i
        }
        return res
    }
    
    func main() {
        res := sum(10)
        if res != 55 {
            fmt.Println("sum求和錯誤")
        } else {
            fmt.Println("sum求和正確")
        }
    }
  • 二、使用main函數的缺點shell

    • 不方便,咱們須要在main函數中去調用,這樣就要去修改main函數,若是項目正在運行中,只能中止項目
    • 不利於管理,當咱們測試多個函數或者多個模塊的時候,都寫在main函數中,不利於咱們管理代碼,感受好臃腫
    • 不能對代碼性能的檢測,不知道函數模塊執行的時間

2、go語言中的單元測試

  • 一、介紹markdown

    Go 語言中自帶有一個輕量級的測試框架testing 和自帶的go test 命令來實現單元測試和性能測試,testing 框架和其餘語言中的測試框架相似,能夠基於這個框架寫針對相應函數的測試用例,也能夠基於該框架寫相應的壓力測試用例併發

  • 二、使用單元測試的優勢框架

    • 確保每一個函數是可運行,而且運行結果是正確的
    • 確保寫出來的代碼性能是好的
    • 單元測試能及時的發現程序設計或實現的邏輯錯誤,使問題及早暴露,便於問題的定位解決,而性能測試的重點在於發現程序設計上的一些問題,讓程序可以在高併發的狀況下還能保持穩定。

3、在go語言中單元測試快速入門

  • 一、在剛剛的go代碼同級的目錄下建立一個xx_test.go的文件ide

    ├── sum.go // 和上面的代碼同樣的
    └── sum_test.go
  • 二、sum_test.go代碼函數

    package main
    
    import "testing"
    
    func TestSum(t *testing.T) {
    	res := sum(10)
    	if res != 55 {
    		t.Fatalf("sum(10)不正確")
    	} else {
    		t.Logf("sum(10)正確")
    	}
    }
  • 三、在命令行運行高併發

    ➜  test git:(master) ✗ go test -v   # 執行的命令
    === RUN   TestSum
    --- PASS: TestSum (0.00s)
        sum_test.go:10: sum(10)正確
    PASS
    ok      github.com/dev/test     0.005s  # 計算出這個方法執行的時間
    ➜  test git:(master) ✗
  • 四、go語言中單元測試的總結性能

    • 測試用例的文件必需要以fileName_test.go結尾[fileName根據須要測試的文件來寫的]

    • 測試用例的函數必須以Test開頭,通常來講就是Test+被測試的函數名

    • 測試用例的函數的參數是固定的t *testing.T

    • 一個測試用例中能夠有多個測試函數

    • 運行測試用例的指令

      • go test:若是運行正確,無日誌輸出,錯誤的時候會輸出日誌
      • go test -v:運行正確或錯誤都會輸出日誌
    • 當出現錯誤時,可使用t.Fatalf 來格式化輸出錯誤信息,並退出程序

    • t.Logf 方法能夠輸出相應的日誌

    • PASS表示測試用例運行成功,FAIL表示測試用例運行失敗

    • 若是文件夾下有不少文件,你僅僅是要測試單個文件的方法

      go test -v xx_test.go xx.go
    • 若是文件中有不少測試用例方法,僅僅是測試一個方法

      go test -v -test.run 測試用例的函數
相關文章
相關標籤/搜索