「testing」パッケージを使用して Go テストでデバッグ情報を出力するにはどうすればよいですか?
Go テストを作成するとき、次のことが役立つ場合があります。コードの動作を理解するのに役立つデバッグ情報を出力します。ただし、 fmt.Println() を使用した標準出力への出力はテスト内では機能しません。これは、テスト出力がバッファリングされ、テストが失敗した場合にのみ出力されるためです。
「testing」パッケージには、デバッグ情報を出力するための 2 つの代替メソッドが用意されています。
これらのメソッドは fmt.Print() に似ています。および fmt.Printf() ですが、出力はテスト ログに直接書き込まれます。ログ記録を有効にするには、go test の実行時に -v (verbose) フラグを指定する必要があります。
go test -v
これにより、成功したテストからのメッセージも含め、すべてのログ メッセージが標準出力に出力されます。
これは t.Log() と t.Logf() の使用方法の例です:
func TestPrintSomething(t *testing.T) { t.Log("Say hi") t.Logf("The value of myVar is %d", myVar) }
このテストを -v で実行すると、次の出力が出力されます:
=== RUN TestPrintSomething Say hi The value of myVar is 1234 --- PASS: TestPrintSomething (0.00s)
t.Error() を使用してエラー メッセージを出力することもできます。これにより、テストが失敗します。
ここでは、t.Error() の使用方法の例を示します:
func TestPrintSomething(t *testing.T) { if myVar != 1234 { t.Errorf("The value of myVar is %d, but it should be 1234", myVar) } }
-v を指定してこのテストを実行すると、次の出力が表示されます。 print:
=== RUN TestPrintSomething The value of myVar is 4567, but it should be 1234 --- FAIL: TestPrintSomething (0.00s)
テスト パッケージには、ベンチマーク テスト用の testing.B タイプも用意されています。 testing.B タイプには、t.Log() のように動作する Log() メソッドがあります。
B.Log() の使用方法の例を次に示します。
func BenchmarkSomething(b *testing.B) { for i := 0; i < b.N; i++ { // Do something b.Log("The value of i is", i) } }
When go test -v でこのベンチマークを実行すると、次の出力が表示されます:
=== RUN BenchmarkSomething The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 ... The value of i is 1000 --- BENCH: BenchmarkSomething 1000000000000000000/s
以上が`testing` パッケージを使用して Go テストでデバッグ情報を出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。