ホームページ > バックエンド開発 > Golang > `testing` パッケージを使用して Go テストでデバッグ情報を出力するにはどうすればよいですか?

`testing` パッケージを使用して Go テストでデバッグ情報を出力するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-06 07:03:11
オリジナル
689 人が閲覧しました

How to Print Debug Information in Go Tests Using the `testing` Package?

「testing」パッケージを使用して Go テストでデバッグ情報を出力するにはどうすればよいですか?

Go テストを作成するとき、次のことが役立つ場合があります。コードの動作を理解するのに役立つデバッグ情報を出力します。ただし、 fmt.Println() を使用した標準出力への出力はテスト内では機能しません。これは、テスト出力がバッファリングされ、テストが失敗した場合にのみ出力されるためです。

「testing」パッケージには、デバッグ情報を出力するための 2 つの代替メソッドが用意されています。

  • t.Log()
  • t.Logf()

これらのメソッドは 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート