У меня есть тестовый пакет, который проверяет некоторые вещи, зависящие от чтения конфигурации. Я хочу прочитать эту конфигурацию один раз перед запуском всех тестов, поэтому я пытаюсь использовать 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)
, то он будет запускаться только один раз для пакета, и именно здесь я должен написать любой код установки или удаления.
TestMain
) должны оканчиваться на*_test.go
. Переименуйте его, например,main_test.go
- person putu   schedule 05.07.2017