1. 程式人生 > >go學習筆記-程式測試

go學習筆記-程式測試

程式測試

測試是一個可重複的過程,它驗證某個東西是否按預期工作。一般通過 go test 進行測試,步驟如下

首先,是我們的檔名。Go 要求所有的測試都在以 _test.go 結尾的檔案中。這使得我們在檢查另一個 package 包的原始碼時,確定哪些檔案是測試和哪些檔案實現功能非常容易。

在看了檔名之後,我們可以直接跳轉到程式碼中,將測試包匯入。它為我們提供了一些型別 (如testing.T) ,這些型別提供常見功能,比如在測試失敗時設定錯誤訊息。

接下來,是編寫測試函式。所有的測試都應該以 func TestXxx(*testing.T) 的格式來編寫。其中 Xxx 可以是任何字元或數字,而第一個字元需要是大寫字元或數字。(譯註:一般,Xxx 就是被測試的函式名)

最後,如上所述,我們使用了測試函式中的引數 *tesing.T。如果我們沒有得到預期的結果,我們使用它來設定一個錯誤,當我們執行測試時,該錯誤將顯示在終端上。

package testing

func Sum(numbers []int) int {  
  sum := 0
  // 這個 bug 是故意的
  for _, n := range numbers {
    sum += n
  }
  return sum
}

接下來在同一個包中,建立一個名為 sum_test.go 的檔案,並將下面的程式碼新增到其中。

package testing

import (  
  "fmt"
  "testing"
)

func TestSum(t *testing.T) {  
  numbers := []int{1, 2, 3, 4, 5}
  expected := 15
  actual := Sum(numbers)

  if actual != expected {
    t.Errorf("Expected the sum of %v to be %d but instead got %d!", numbers, expected, actual)
  }
}
現在我們要執行我們的測試,所以在終端中切換到 testing101 包所在目錄,並使用下面的命令執行測試。

go test -v


你應該看到像這樣的輸出:

=== RUN TestSum
— PASS: TestSum (0.00s)
PASS
ok calhoun.io/testing101 0.005s