我有一个测试软件包,用于测试一些依赖于读取配置的东西。我想运行的所有测试之前曾经读到过这样的配置,所以我试图用TestMain(m *testing.M)
:TestMain not run
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)
,那么它将只运行一次包,这就是我应该编写任何安装或拆卸代码的地方。
测试套件中的所有文件(包括定义'TestMain'的文件)必须以'* _test.go'结尾。重命名为例如'main_test.go' – putu
@putu omg!那一定是吧。我现在觉得自己像个白痴。一旦我靠近我的电脑,就会检查! – Dina
是的,事实确实如此。那么,至少现在我确信这永远不会再发生在我身上。 – Dina