У меня есть несколько пакетов под подкаталог под src/,
запуск тестов для каждого пакета с помощью go test
работает нормально.
При попытке запустить все тесты с помощью go test ./...
тесты выполняются, но это не удается.
тесты выполняются на локальных серверах баз данных, каждый тестовый файл имеет глобальные переменные с указателями db.
Я попытался запустить тесты с помощью -parallel 1
, чтобы предотвратить конфликт в db, но тесты все еще терпят неудачу.
что может быть здесь?
EDIT: некоторые тесты не работают при отсутствии записей в БД, я полностью очищаю БД до и после каждого теста. единственная причина, по которой я могу думать о том, почему это происходит, - это из-за некоторых противоречий между тестами.
ИЗМЕНИТЬ 2:
каждый из моих тестовых файлов имеет две глобальные переменные (используя mgo):
var session *mgo.Session
var db *mgo.Database
также имеет следующие функции настройки и разблокировки:
func setUp() {
s, err := cfg.GetDBSession()
if err != nil {
panic(err)
}
session = s
db = cfg.GetDB(session)
db.DropDatabase()
}
func tearDown() {
db.DropDatabase()
session.Close()
}
каждый запуск тестов с setUp()
и defer tearDown()
также cfg:
package cfg
import (
"labix.org/v2/mgo"
)
func GetDBSession() (*mgo.Session, error) {
session, err := mgo.Dial("localhost")
return session, err
}
func GetDB(session *mgo.Session) *mgo.Database {
return session.DB("test_db")
}
ИЗМЕНИТЬ 3:
Я изменил cfg на использование случайной базы данных, тесты прошли. кажется, что тесты из нескольких пакетов работают несколько параллельно.
можно ли заставить go test
запускать все последовательно по пакетам?