TestMain 不是 运行
TestMain not run
我在 go 中有一个测试包,它测试一些依赖于读取配置的东西。我想在 运行 进行所有测试之前阅读一次该配置,所以我正在尝试使用 TestMain(m *testing.M)
:
main.go:
package tests
import (
...
)
var logger = logging.MustGetLogger("tests")
func TestMain(m *testing.M) {
logger.Info("Initializing test suite")
viper.SetConfigName("config")
viper.AddConfigPath("..\..\")
err := viper.ReadInConfig()
if err == nil {
os.Exit(m.Run())
} else {
logger.Fatal("Could not read configuration")
}
}
我在同一目录(和包)中有另一个文件进行测试。
repository_test.go:
package tests
import (
...
)
func TestCreation(t *testing.T) {
aa := myModule.CreateRepository()
assert.NotNil(t, aa)
}
我的问题是测试失败,因为没有从文件中读取配置。当我尝试在 Gogland 中调试测试时,TestMain
内的断点未命中。当我 运行 从命令行进行测试时,我没有看到 TestMain
.
的任何打印输出
我应该做些什么特别的事情来让它发挥作用?根据我在网上阅读的内容,我了解到如果我定义 TestMain(m *testing.M)
那么它只会为包 运行 一次,这就是我应该编写任何设置或拆卸代码的地方。
确保运行 配置设置为Package not File in 运行 |编辑配置... |去测试 |您的配置名称,这应该可以工作。如果没有,请 post 命令 IDE 运行 执行测试。
TestMain只在测试文件中执行(后缀_test.go
)。
将函数移动到 repository_test.go 文件以解决此问题。
我在 go 中有一个测试包,它测试一些依赖于读取配置的东西。我想在 运行 进行所有测试之前阅读一次该配置,所以我正在尝试使用 TestMain(m *testing.M)
:
main.go:
package tests
import (
...
)
var logger = logging.MustGetLogger("tests")
func TestMain(m *testing.M) {
logger.Info("Initializing test suite")
viper.SetConfigName("config")
viper.AddConfigPath("..\..\")
err := viper.ReadInConfig()
if err == nil {
os.Exit(m.Run())
} else {
logger.Fatal("Could not read configuration")
}
}
我在同一目录(和包)中有另一个文件进行测试。
repository_test.go:
package tests
import (
...
)
func TestCreation(t *testing.T) {
aa := myModule.CreateRepository()
assert.NotNil(t, aa)
}
我的问题是测试失败,因为没有从文件中读取配置。当我尝试在 Gogland 中调试测试时,TestMain
内的断点未命中。当我 运行 从命令行进行测试时,我没有看到 TestMain
.
我应该做些什么特别的事情来让它发挥作用?根据我在网上阅读的内容,我了解到如果我定义 TestMain(m *testing.M)
那么它只会为包 运行 一次,这就是我应该编写任何设置或拆卸代码的地方。
确保运行 配置设置为Package not File in 运行 |编辑配置... |去测试 |您的配置名称,这应该可以工作。如果没有,请 post 命令 IDE 运行 执行测试。
TestMain只在测试文件中执行(后缀_test.go
)。
将函数移动到 repository_test.go 文件以解决此问题。