Go:如何为多个包运行测试?

 T岛T_387 发布于 2023-01-14 16:10
  • php
  • 我在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在包中顺序运行所有内容?

    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    热门标签
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有