要验证被测函数生成的日志,捕获和检查日志至关重要。这可以通过重定向输出并将其与预期值进行比较来实现。
在提供的示例中,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中文网其他相关文章!