问题
我想知道的用例t.Cleanup
Go1.14中引入。与使用 defer 相比,t.Cleanup 有何便利?
https://golang.org/pkg/testing/#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...
}
如果您的测试出现恐慌,也会调用清理函数,因此在您的情况下,两者都可以工作。
使用的优点T.Cleanup() https://golang.org/pkg/testing/#T.Cleanup如果您的测试调用其他函数,通过testing.T
沿着。显然使用defer
这些函数将在这些函数返回之前执行,但是如果您使用T.Cleanup()
,那么它们只会在测试结束时被调用。
考虑到T.Cleanup()
作为“改进”和扩展版本defer
。它还记录了传递的函数用于清理目的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)