当前位置: 首页 > 面试题库 >

前往:如何对多个软件包运行测试?

管玉堂
2023-03-14
问题内容

我在src /下的子目录下有多个软件包,使用每个软件包运行测试都go test可以正常工作。

尝试运行所有测试时,所有测试go test ./...都在运行,但失败。

这些测试是针对本地数据库服务器运行的,每个测试文件都有带有db指针的全局变量。

我尝试运行测试-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在软件包之间依次运行所有内容?


问题答案:

显然,go test -p 1运行按顺序运行所有内容(包括构建),但在go help testgo help testflag



 类似资料:
  • 问题内容: 是否可以跳过测试目录。例如,鉴于下面的结构,是否可以测试mypackage,mypackage / other和mypackage / net,但不能测试mypackage / scripts?我的意思是无需为每个脚本编写go test命令(例如,去测试;去测试网;去测试其他) 问题答案: Go test带有要在命令行上测试的软件包列表(请参阅参考资料),因此您可以通过一次调用来测试任

  • 问题内容: 我需要编写或查找脚本,以使用package从Python软件包创建Debian软件包。Python软件包将是不带C扩展的纯Python。 用于测试目的的Python软件包将只是一个包含空文件和单个Python模块的目录。 包装脚本 必须 用于为目标平台上可能的多次Python安装提供正确的字节码,例如,在Ubuntu 9.04 (Jaunty Jackalope)上安装v2.5和v2.

  • 问题内容: 当我将其作为a的一部分并尝试从cmd运行它时,我不断收到错误消息。 这是先使用后再使用java 的代码: 然后无效的代码: 在尝试通过命令运行程序后给了我这个错误: 到目前为止,这是我尝试过的操作: 请记住,返回没有错误,只需删除即可解决问题。有时在其他情况下,我会收到一条错误消息,提示找不到主类文件或类似的内容。 我究竟做错了什么? 问题答案: 假设您在中,并且在中,然后键入:

  • 问题内容: 我可以在Maven文档中找到如何运行的地方: 一次测试 所有测试都在一个测试类中 符合特定模式的类中的所有测试 但是,如何在一个包中运行所有测试?这可能吗? 我希望不需要修改或代码的解决方案。 问题答案: 例如,您也可以使用模式 运行以 de.mypackage 包结尾的类中的所有测试。 [更新2017/12/18]: 由于这已成为公认的答案,因此这里有一些进一步的信息: Maven使

  • 问题内容: 仅使用一个参数作为要检查的子字符串,如何检查多个子字符串而不重复使用? 例如。 问题答案: 您可以使用可用于多个子字符串的函数编写自己的实用程序函数。 以下是在完全/部分匹配以及匹配总数的情况下返回布尔值(/ )的示例: 输出: 这是实时示例:https : //play.golang.org/p/Xka0KfBrRD

  • 问题内容: 目前,我的主包中只有一个文件,名为。由于代码不可重用,如何将内容拆分为多个文件而不创建单独的程序包。 我想要这样的目录结构: 然后在 但是给我: 问题答案: 原始答案 上面的代码实际上有效。问题是我需要跑步 代替