ホームページ >バックエンド開発 >Golang >Go でログを使用する関数からの出力をテストするにはどうすればよいですか?

Go でログを使用する関数からの出力をテストするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-22 08:18:12470ブラウズ

How to Test Output from Functions that Use Logging in Go?

Go テストでロギングを使用する関数からの出力をテストする方法

fmt.Println( などのロギング メカニズムを利用する関数をテストする場合) ) または log.Print() を使用すると、それらの関数によって生成された出力にアクセスする必要があります。 test.

これを実現するには、次の手順に従います。

readbyte_test.go などのテスト ファイルで、bytes.Buffer と log.SetOutput() を使用して、ログ関数のバッファへの出力:

import (
    "bytes"
    "log"
    "os"
    "testing"
)

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    log.SetOutput(&buf)
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    t.Log(buf.String())
}

defer 関数でログ出力を os.Stderr に復元することを忘れないでください。他のテストや後続のコードとの潜在的な干渉を回避します。

readByte() を呼び出し、t.Log() を使用してバッファの内容をログに記録することで、テスト対象の関数によって生成された実際の出力を調べることができます。この手法を使用すると、関数のコード自体を変更せずに、予想されるエラー メッセージやその他のログ情報を検証できます。

以上がGo でログを使用する関数からの出力をテストするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。