Go 提供了一個測試包,其中包含許多用於單元測試的工具。
準備
讓我們來練習一下,首先準備一個 Cube 結構體,該結構體的物件變數稍後將用作測試材料。
package main import "math" type Cube struct { Sisi float64 } func (k Cube) Volume() float64 { return math.Pow(k.Sisi, 3) } func (k Cube) Area() float64 { return math.Pow(k.Sisi, 2) * 6 } func (k Cube) circumference() float64 { return k.Sisi * 12 }
將上面的程式碼儲存在training1.go檔案中
package main import "testing" var ( cube Cube = Cube{4} volume Should float64 = 64 area Should float64 = 96 circumference Should float64 = 48 ) func TestCalculateVolume(t *testing.T) { t.Logf("Volume : %.2f", cube.Volume()) if cube.Volume() != volumeShould { t.Errorf("WRONG! should be %.2f", volumeShould) } } func TestCalculateSurface(t *testing.T) { t.Logf("Area : %.2f", cube.Area()) if cube.Area() != areaShould { t.Errorf("WRONG! should be %.2f", areaShould) } } func TestCalculatePerimeter(t *testing.T) { t.Logf("Perimeter : %.2f", cube.Perimeter()) if cube.Perimeter() != circumferenceShould { t.Errorf("WRONG! should be %.2f", circumferenceShould) } }
t.Logf()方法用來顯示日誌。該方法相當於 fmt.Printf() .
Errorf() 方法用於顯示一條日誌,後面接著一條測試期間發生失敗的語句。
執行測試的方法是使用 go test 指令。由於被測試的結構體在 bab55.go 檔案中,因此使用 go test 執行測試時,需要將 bab55_test.go 和 bab55.go 檔案名稱寫入為參數。 -v 或 verbose 參數用於顯示測試期間的所有日誌輸出。
如下圖所示運行應用程序,可以看到沒有測試失敗。好的,那麼試著更改 Keliling() 方法的計算公式。此變更的目的是找出測試失敗時失敗標記如何顯示。
func (k Cube) Perimeter() float64 { return k.Side * 15 }
之後再次執行測試。
以上是Go 的單元測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!