我在src /下的子目录下有多个包,运行每个包的测试go test
工作正常.
当尝试运行所有测试时go test ./...
,测试正在运行,但它失败了..
测试针对本地数据库服务器运行,每个测试文件都有包含数据库指针的全局变量.
我试图运行测试-parallel 1
以防止数据库中的争用,但测试仍然失败.
这可能是什么问题?
编辑:有些测试在缺少数据库条目时失败,我在每次测试之前和之后都完全清除了数据库.我能想到为什么会发生这种情况的唯一原因是因为测试之间存在一些争用.
编辑2:
我的每个测试文件都有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
在包中顺序运行所有内容?