【发布时间】:2018-06-26 19:32:53
【问题描述】:
我有一个用于定义日志文件路径的函数的 TestCase,然后设置记录器,以便将 log.* 语句写入标准输出和日志文件:
lf, err := os.Create(logFile)
mw := io.MultiWriter(os.Stdout, lf)
log.SetOutput(mw)
在我的测试用例中,我试图在最后进行清理,但文件上似乎仍然存在锁定,这意味着 Os.Remove() 调用不起作用(甚至返回错误)
我尝试将 SetOutput 设置为 nil 以及使用 defer 语句。
func TestSetLogging(t *testing.T) {
// do stuff
...
log.Println("this should be in logger file")
// cleanup
log.SetOutput(nil)
defer os.Remove(logFile)
}
然而,日志文件仍然出现在磁盘上。如何删除此文件?
【问题讨论】:
-
你不应该在函数末尾有一个 defer 调用。您是否在
// do stuff中提前退出测试?也许发布你所有的代码让事情变得更容易。
标签: go