テーブル駆動テストは、入力と予想される出力をテーブルで定義することにより、Go 単体テストでのテスト ケースの作成を簡素化します。構文には次のものが含まれます。 1. テスト ケース構造を含むスライスを定義します。 2. スライスをループし、結果を予想される出力と比較します。 実際のケースでは、文字列を大文字に変換する関数に対してテーブル駆動テストが実行され、テストの実行と合格結果の出力には go test が使用されました。
テーブル駆動テスト は、テーブルを使用して複数の入力と期待される出力を定義するテスト方法です。これにより、テスト ケースごとに個別の関数を作成するのではなく、テーブル自体を定義するだけで済むため、テスト ケースを作成するプロセスが簡素化され、高速化されます。
テーブル駆動テストの構文は次のとおりです:
import "testing" func TestTableDriven(t *testing.T) { tests := []struct { input string expected string }{ {"a", "A"}, {"b", "B"}, {"c", "C"}, } for _, test := range tests { result := UpperCase(test.input) if result != test.expected { t.Errorf("Expected %q, got %q", test.expected, result) } } }
tests
は、テスト対象の入力と予期される出力を定義する構造体スライスです。 tests
是一个结构体切片,它定义了要测试的输入和预期输出。range tests
循环遍历 tests
切片中的每个测试用例。result
是要测试的函数的输出。if result != test.expected
检查结果是否与预期输出匹配。以下是一个将字符串转换为大写的函数的表驱动的测试:
import ( "testing" "strings" ) func TestUpperCase(t *testing.T) { tests := []struct { input string expected string }{ {"a", "A"}, {"b", "B"}, {"c", "C"}, } for _, test := range tests { result := strings.ToUpper(test.input) if result != test.expected { t.Errorf("Expected %q, got %q", test.expected, result) } } }
要运行测试,请使用 go test
range testing
は、tests
スライス内の各テスト ケースをループします。
result
は、テストされる関数の出力です。 if result != test.expected
結果が予想される出力と一致するかどうかを確認します。
go test -v
go test
を使用します:🎜 === RUN TestUpperCase --- PASS: TestUpperCase (0.00s) PASS ok github.com/user/pkg 0.005s
以上がGolang 単体テストでテーブル駆動テスト手法を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。