登录
首页 >  Golang >  Go问答

t.Cleanup 有什么用处?

来源:Golang技术栈

时间:2023-04-30 11:03:53 415浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《t.Cleanup 有什么用处?》,这篇文章主要会讲到golang等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

问题

我想知道t.CleanupGo1.14中引入的用例。与使用 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...
}

正确答案

如果您的测试出现恐慌,也会调用清理函数,因此在您的情况下两者都可以工作。

T.Cleanup()如果您的测试调用其他函数并传递,则使用的优势变得明显testing.T。显然 using deferin 这些函数将在这些函数返回之前执行,但是如果您使用 注册清理函数T.Cleanup(),那么它们将仅在测试结束时被调用。

T.Cleanup()其视为“改进”和扩展的defer. 它还记录了传递的函数用于清理目的。

今天关于《t.Cleanup 有什么用处?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>