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 または冗長引数は、テスト中にすべてのログ出力を表示するために使用されます。
以下の画像に示すようにアプリケーションを実行すると、失敗したテストがないことがわかります。それでは、Keliling() メソッドの計算式を変更してみてください。この変更の目的は、テストが失敗したときに失敗マーカーがどのように表示されるかを確認することです。
func (k Cube) Perimeter() float64 { return k.Side * 15 }
その後、テストを再度実行します。
以上がGo での単体テストの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。