要驗證被測函數產生的日誌,捕獲和檢查日誌至關重要。這可以透過重定向輸出並將其與預期值進行比較來實現。
在提供的範例中,readByte 函數將日誌訊息列印到標準輸出。要在測試中捕獲這些訊息,我們可以使用bytes.Buffer ,如下所示:
package main import ( "bytes" "fmt" "io" "log" "os" "testing" ) func readByte(/*...*/) { // ... if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } // ... } func TestReadByte(t *testing.T) { var buf bytes.Buffer log.SetOutput(&buf) defer func() { log.SetOutput(os.Stderr) }() readByte() t.Log(buf.String()) }
說明:
透過檢查buf 的內容,您可以驗證readByte 函數是否產生了預期的紀錄.這種方法可讓您測試日誌輸出,而無需修改被測函數的程式碼。
以上是如何在 Go 測試中擷取和檢查日誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!