【问题标题】:How to get test environment at run time如何在运行时获取测试环境
【发布时间】:2015-04-13 02:52:54
【问题描述】:

我想检查go test的代码是否正在运行,以便我可以进行一些配置。

有什么功能可以做到这一点吗? 喜欢:

runtime.IsBeingTested()

【问题讨论】:

  • 如果测试代码需要知道它是否正在测试(因此运行方式不同),我不会认为测试权威。如果被告知它没有被测试,测试将不会测试将被执行的代码路径。所有需要知道是否正在执行测试的代码都应该在XX_test.go 文件中。
  • 如果你想在测试中使用不同的配置,为什么不在测试函数的开头设置?

标签: testing go


【解决方案1】:

只需指定您在测试的init 中运行测试。例如,在 pkg.go 中:

package pkg

var isTesting = false

// ...

在 pkg_test.go 中:

package pkg

func init() {
    isTesting = true
}

// ...

这种技术不仅可以用于bools,还可以用于任何数据或函数。如果您的包中有一些变量(在您的情况下是配置变量),您可以在 init 中覆盖它。

【讨论】:

  • 但这是否意味着需要在所有测试代码中包含此代码?
  • @songyy 我不明白你的意思。每个包只执行一次。
  • 假设我们有 2 个文件需要检查 isTesting 属性。然后在这 2 个文件中的每一个中,我们都需要定义 isTesting 变量是它..?
  • @songyy 同样,如果这些文件在同一个包中,那么不会。每个包执行一次。
猜你喜欢
  • 2017-03-29
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 2018-03-05
  • 1970-01-01
  • 1970-01-01
  • 2018-12-11
相关资源
最近更新 更多