Обычно я пытаюсь запустить команду go test ./...
для конвейера CI / CD, которая использовалась для запуска всех тестовых случаев среди всех подкаталогов.
Но я недавно провела рефакторинг своего кода, чтобы получить путь к файлу конфигурации из анализа флага, а затем прочитать и инициализировать все переменные (требуется перед запуском сервера). Это изменение необходимо для удаления всего кода инициализации из
init function -> custom function
который будет вызываться из основного.
Теперь все, что связано, сделано, но все контрольные примеры не работают, так как мне нужно вызвать все пользовательские функции откуда-то.
Я пытался использовать функцию TestMain, но я думаю, что она работает только для одного и того же модуля, и все тестовые примеры терпят неудачу.
func TestMain(m *testing.M) {
mySetupFunction()
retCode := m.Run()
myTeardownFunction()
os.Exit(retCode)
}
Нужна помощь, чтобы узнать, как создать глобальную тестовую настройку или узнать, есть ли какой-либо другой лучший способ для вышеупомянутого рефакторинга.
Моя структура модулей выглядит следующим образом
A
B
C
D
E
F
G
H
I
main.go
где родительский модуль - это A, который содержит main.go и различные другие модули, некоторые из которых вложены в глубокий уровень, и все они имеют свои собственные тестовые случаи