Go言語では、標準の testing
パッケージを使って自動テストを行うことができます。具体例を示しますので、手順に従ってコードを書いていきましょう。
ステップ1: 関数を用意する
最初に、テストする対象の関数を用意します。ここでは、2つの数値を足し算する Add
関数を例に挙げます。
calc.go
ファイル:
package calc
// Add は2つの数値を足し算する関数です
func Add(a, b int) int {
return a + b
}
ステップ2: テストコードを書く
次に、Add
関数に対するテストコードを書きます。テストコードは、*_test.go
という名前のファイルに書く必要があります。
calc_test.go
ファイル:
package calc
import "testing"
func TestAdd(t *testing.T) {
// テストケース1: 2 + 3 = 5
result := Add(2, 3)
expected := 5
if result != expected {
t.Errorf("Add(2, 3) = %d, expected %d", result, expected)
}
// テストケース2: 0 + 0 = 0
result = Add(0, 0)
expected = 0
if result != expected {
t.Errorf("Add(0, 0) = %d, expected %d", result, expected)
}
// テストケース3: -1 + 1 = 0
result = Add(-1, 1)
expected = 0
if result != expected {
t.Errorf("Add(-1, 1) = %d, expected %d", result, expected)
}
}
testing.T
は、テストに関する情報を持つ構造体です。t.Errorf
は、テストが失敗した場合にエラーメッセージを出力します。
ステップ3: テストを実行する
テストコードを書いたら、実際にテストを実行してみましょう。ターミナル(コマンドプロンプト)で、プロジェクトのディレクトリに移動し、以下のコマンドを実行します。
go test ./...
すると、以下のような出力が得られます。
ok example.com/calc 0.005s
テストがすべて成功したことがわかります。
ステップ4: テストが失敗するケースを確認する
故意にテストコードを変更して、テストが失敗するケースを確認してみましょう。calc_test.go
ファイルの最後のテストケースを次のように変更します。
// テストケース3: -1 + 1 = 1 (間違っている)
result = Add(-1, 1)
expected = 1
if result != expected {
t.Errorf("Add(-1, 1) = %d, expected %d", result, expected)
}
再度テストを実行すると、今度は次のようなエラーメッセージが出力されます。
--- FAIL: TestAdd (0.00s)
calc_test.go:23: Add(-1, 1) = 0, expected 1
FAIL
exit status 1
FAIL example.com/calc 0.005s
このように、Go言語の testing
パッケージを使うことで、自動テストを簡単に実装できます。テストは、関数やメソッドが期待どおりに動作することを確認するために重要です。また、リファクタリングやコード変更の際にも、テストを実行してバグの有無を確認できます。
コメント