在使用testing package时,如何进行整体测试设置处理,为所有测试做好准备?

例如,Nunit中有一个[SetUp]属性.

[TestFixture]
public class SuccessTests
{
  [SetUp] public void Init()
  { /* Load test data */ }
}

推荐答案

从Go 1.4开始,您可以实现设置/拆卸(无需在每次测试之前/之后复制功能).本文件在第Main节中有here条概述:

TestMain在主Goroutine中运行,可以执行任何设置和 在给m.Run的电话周围拆毁是必要的.然后,它应该调用 OS.退出,结果为m.Run

我花了一些时间才弄明白,这意味着如果测试包含函数func TestMain(m *testing.M),则将调用该函数,而不是运行测试.在此函数中,我可以定义测试将如何运行.例如,我可以实施全局设置和拆卸:

func TestMain(m *testing.M) {
    setup()
    code := m.Run() 
    shutdown()
    os.Exit(code)
}

其他几个例子can be found here.

TestMain特性在最新版本中添加到Go的测试框架中

Go相关问答推荐

语法-for循环中的initit陈述是否允许分配?

Golang Viper:如果第一个字段不存在,如何从另一个字段获取值

如何使用工作区方法扩展克隆的Golang库

如何在Golang中覆盖404

无法在go中为docker容器写入有效的挂载路径

使用Goldmark在golang中添加ChildNode会导致堆栈溢出

xml.Unmarshal 不支持的类型 struct

Yocto 无法交叉编译 GoLang Wails 应用程序

AddE 上的 Apache Tinkerpop gremlin-go 驱动程序 Next() 返回E0903:没有剩余结果

整理时转换值

接受通道和切片的通用函数

在 Go 模板中对照片使用随机 Int

Golang BigInt 部门

将 Golang Gin 与 AWS Lambda 和无服务器与代理路径一起使用

如何在gin中获取参数值数组

在 Go 中将指针传递给函数的正确方法是什么,以便我可以读取和/或修改指针表示的值?

Golang - 使用正则表达式提取链接

从另一个没有重复的确定性 int

如何使用 httputil.ReverseProxy 设置 X-Forwarded-For

如何访问Go 1.18泛型 struct (structs)中的共享字段