问题
我想知道Go1.14中引入的 t.Cleanup
的用例。相比使用defer,t.Cleanup有哪些便利之处?
https://golang.org/pkg/testing/#T.Cleanup.
- 示例
例如,假设我们创建了一个临时目录,在测试结束后,我们希望删除我们创建的临时目录。
可以使用t.Cleanup
编写如下测试,但它也可以像defer os.RemoveAll(tempDir)
一样工作。
package mypkg
import (
"io/ioutil"
"os"
"testing"
)
func TestDirwalk(t *testing.T) {
tempDir, err := ioutil.TempDir(".", "temp")
if err != nil {
t.Errorf("create tempDir: %v", err)
}
t.Cleanup(func() { os.RemoveAll(tempDir) })
// something...
}
defer
也会被调用。t.Cleanup()
很有用,因为您可以将其传递给辅助函数,并让它们指定自己的清理操作。 - Francesco Casula