func TestMain(m *testing.M), но не вызвать m.Run()?Если определён TestMain, go test вызывает его вместо прямого запуска тестов. Без вызова m.Run() ни один Test* не выполнится.
func TestMain(m *testing.M) {
setup()
code := m.Run()
teardown()
os.Exit(code)
}
m.Run() запускает все тесты пакета и возвращает код выхода. Его нужно передать в os.Exit.