在某些情况下,我具有记录错误的功能:
func readByte(/*...*/){ // ... if err != nil { fmt.Println("ERROR") log.Print("Couldn't read first byte") return } // ... }
现在,在测试文件中,我想检查此函数的输出错误:
c.Assert(OUTPUT, check.Matches, "teste")
如何访问日志?我试图放置一个缓冲区,但是没有用。在不更改我的readByte函数代码的情况下捕获此日志的正确方法是什么?
例如,
readbyte_test.go:
readbyte_test.go
package main import ( "bytes" "fmt" "io" "log" "os" "testing" ) func readByte( /*...*/ ) { // ... err := io.EOF // force an error 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()) }
输出:
$ go test -v readbyte_test.go === RUN TestReadByte ERROR --- PASS: TestReadByte (0.00s) readbyte_test.go:30: 2017/05/22 16:41:00 Couldn't read first byte PASS ok command-line-arguments 0.004s $